2010-05-05 74 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); 
} 

但是,这一点儿也不似乎工作。我无法更改XML,因为它来自第三方。任何帮助都会很棒。提前致谢!

+2

我觉得下划线是不是这个原因,它是整个XML一个合法的字符。 – Dormilich 2010-05-06 00:03:03

+1

您是否尝试过(仅用于调试)使用类似的没有下划线的xml文件?你很可能有另一个问题。正如Dormilich所说,下划线在xml标签/字段名称中是有效的 – Akusete 2010-05-06 00:05:09

+0

是的。我已经做了一个测试,使用上面的完全相同的代码,它不起作用。似乎是下划线,因为一旦我把它拿走,它就会起作用。 – alvincrespo 2010-05-06 00:10:08

回答

3

的问题是,some_xml是你的根结点,这样你就不会需要包括。

这应该工作:

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

的是要记住的是,.NODE属性约和是快捷方式.child(“节点”)和属性约分别为(“参数”)(根据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"));