Обход узла AS3 XML

Я перехожу с AS2 на AS3 и столкнулся с проблемой захвата узлов из XML. Я могу захватить (и отследить) весь файл XML в AS3, но хочу иметь возможность сохранить первый тег как узел, используя firstChild, и перебирать теги, используя nextSibling. Но в AS3 firstChild продолжает оставаться пустым, тогда как мой предыдущий код AS2 на самом деле захватывал содержимое. Что я делаю неправильно? (и я не могу называть теги по их именам, потому что я повторно использую блок кода для нескольких файлов xml)

var eRoot = exampleXML.firstChild;
while (eRoot != null) {
  //do stuff
  eRoot= eRoot.nextSibling;
}

Мой тестовый XML-файл:

<?xml version="1.0" encoding="UTF-8"?>
<content>
    <version>cd</version>
    <lessonlock>~-*~-*</lessonlock>
    <expiryDate>**#*#**##**##**##*##********###*</expiryDate>
    <isSpanish>true</isSpanish>
    <server>http://www.exampleSite.com</server>
</content>

person woodlumhoodlum    schedule 20.04.2012    source источник
comment
Попробуйте использовать XMLDocument для xml-справки в стиле as2. adobe.com/en_US/FlashPlatform/reference/actionscript/3/   -  person www0z0k    schedule 21.04.2012
comment
спасибо, это то, что я искал :)   -  person woodlumhoodlum    schedule 21.04.2012


Ответы (1)


Это связано с тем, что ни firstChild, ни nextSibling не существуют как свойства объекта AS3 XML. Как вы это делаете, вы ищете узлы <firstChild> и <nextSibling>.

Вам следует прочитать API для XML, а еще лучше , руководство Adobe по E4X.

person weltraumpirat    schedule 20.04.2012
comment
правильно, я этого не понял. но проблема все еще существует, потому что я использую разные XML-файлы с разными тегами в каждом - я не хочу заранее знать имя тега, чтобы захватить его - поэтому кажется, что больше нет способа сделать это. если я, возможно, не использую манипуляции со строками, чтобы разделить теги и сохранить их в какой-либо другой структуре данных. - person woodlumhoodlum; 20.04.2012
comment
Вам следует действительно прочитать те источники, на которые я ссылаюсь. Конечно, вы можете использовать XMLLists для обхода дочерних узлов, не зная их имен: node.* вернет всех дочерних узлов, node..* всех потомков и т. д. - person weltraumpirat; 20.04.2012
comment
Я прочитал первый источник полностью вчера. когда я вчера попробовал XMLList, я смог создать список длиной 1 только со всем файлом xml в первом слоте. но я, вероятно, что-то пропустил, поэтому я продолжу пробовать этот маршрут, спасибо. - person woodlumhoodlum; 20.04.2012