Просмотр полной версии : Поик нужных потомков в XML
Здравствуйте.
Нужно получить из 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());
По идее, все правильно вам возвращает, но toString() выдает пустую строку, т.к. у path нет текстовой ноды.
Попробуйте так:
trace(dataXML.descendants("path").toXMLString());
Не помогло. Все так же выводит пустоту :(
crazyone
27.12.2011, 16:49
Может у вас нет чайлдов path в вашем свг?
Кажется, вы неправильно используете метод.
Киньте пример данных.
Пример:
<?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
неймспейсы поубирайте
неймспейсы поубирайте
Какие неймспейсы?
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));
var ns:Namespace = new Namespace(null, "http://www.w3.org/2000/svg");
trace(dataXML..ns::path.toXMLString());
или просто
trace(dataXML..*::path.toXMLString());
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.