PDA

Просмотр полной версии : Поик нужных потомков в XML


Srednas
27.12.2011, 16:28
Здравствуйте.

Нужно получить из SVG («подвид» XML) всех потомков с именем path.
Подскажите что я неправильно делаю, используя descendants (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/XML.html#descendants%28%29)

Делаю так:

trace(dataXML.descendants("path")); // пустота


Но если имя не указывать т.е.

trace(dataXML.descendants()); // выводятся все потомки, затем потомки потомков и т.д


То выводится вся XML'ка.

Почему не выводятся path'и?

crazyone
27.12.2011, 16:31
По идее, все правильно вам возвращает, но toString() выдает пустую строку, т.к. у path нет текстовой ноды.
Попробуйте так:
trace(dataXML.descendants("path").toXMLString());

Srednas
27.12.2011, 16:43
По идее, все правильно вам возвращает, но toString() выдает пустую строку, т.к. у path нет текстовой ноды.
Попробуйте так:
trace(dataXML.descendants("path").toXMLString());

Не помогло. Все так же выводит пустоту :(

crazyone
27.12.2011, 16:49
Может у вас нет чайлдов path в вашем свг?

ChuwY
27.12.2011, 16:53
Кажется, вы неправильно используете метод.
Киньте пример данных.

Srednas
27.12.2011, 16:57
Пример:

<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Moz" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="354.917px" height="570.722px" xml:space="preserve">
<g id="m">
<g id="r">
<path id="M2" fill="#DADADA" stroke="#009640" stroke-miterlimit="10" d="M93.792,375.606l-0.252-0.979l1.002-0.334 l2.75-2.75L93.792,375.606z" />
<path id="M1" fill="#DADADA" stroke="#009640" stroke-miterlimit="10" d="M128.698,494.825l0.89,2.191l-7.796,2.776 l-11.75,3.875l-15.875,5.876l-7.729,3.896l-0.313-2.479l-1.146-1.728l-1.323-1.865l-2.328,0.817l-3.164-0.842l0.668-2.67L128.698,494.825z" />
</g>
</g>
</svg>

cleptoman
27.12.2011, 17:01
неймспейсы поубирайте

Srednas
27.12.2011, 17:06
неймспейсы поубирайте

Какие неймспейсы?

cleptoman
27.12.2011, 17:19
xmlns="http://www.w3.org/2000/svg"

Добавлено через 20 минут
либо:

var ns:Namespace = new Namespace("http://www.w3.org/2000/svg");
var search:QName = new QName(ns,"path");
trace(dataXML.descendants(search));

a_[w]
28.12.2011, 15:13
var ns:Namespace = new Namespace(null, "http://www.w3.org/2000/svg");
trace(dataXML..ns::path.toXMLString());
или просто
trace(dataXML..*::path.toXMLString());