2010-05-05 3 views
1

Как я могу проанализировать XML-документ, содержащий узлы, где существуют символы подчеркивания?Анализ XML с узлами, содержащими символы подчеркивания

<some_xml> 
    <child_node> 
     <child width_info="" height_info="" /> 
    </childnode> 
</some_xml> 

Я попытался это:

for each (var item:XML in Environment._XMLData.some_xml.child_node.child){ 
    trace([email protected]_info); 
} 

Но does'nt похоже на работу. Я не могу изменить XML либо потому, что он от третьего лица. Любая помощь будет большой. Заранее спасибо!

+2

Я думаю, что подчеркивание не причина, это юридический характер по всему XML. – Dormilich

+1

вы пробовали (просто ради отладки) с помощью аналогичного xml-файла без подчеркивания? У вас, скорее всего, есть еще одна проблема. Как сказал Дормилих, подчеркивания действительны в именах тегов xml/field – Akusete

+0

Yep. Я уже сделал тест, с тем же кодом выше, и он не работает. Кажется, это подчеркивание, потому что, как только я заберу его, он работает. – alvincrespo

ответ

3

Проблема заключается в том, что some_xml является корневым узлом, так что вам не нужно включать это.

Это должно работать:

for each (var item:XML in Environment._XMLData.child_node.child){ 
    trace([email protected]_info); 
} 
0

Важно помнить, что .NODE и .attribute являются ярлыками для .child («УЗЕЛ») и .attribute («ПРИЗНАК»), соответственно (согласно Traversing XML structures (c/o the livedocs)

Так что я думаю, что что-то вдоль линии ниже будут работать (код не тестировался, но теория должна быть звуком)

for each (var item:XML in Environment._XMLData.child("child_node").child){ 
    trace([email protected]_info); 
} 

Примечания, если атрибут не определен, вы получите ошибку во время выполнения программы. - вы можете предотвратить это, либо :

if(child.hasOwnProperty("width_info")) 
    trace([email protected]_info); 

или просто использовать атрибут

trace(child.attribute("width_info"));