3

我很难使用 e4X 解析 XML 文件。我可以从“版本”标签中获取信息,但不能从任何嵌套标签中获取信息。

有人可以指出我做错了什么吗?

这是 XML:

<NameOfRoot xmlns="http://www.theaddress.com/file">
    <version>1.0</version>
    <NameOfChild1>
        <NameOfChild2>
            <GeneralData>
                <Identifier>2678</Identifier>
            </GeneralData>
        </NameOfChild2>
    </NameOfChild1>
</NameOfRoot>

这是代码:

<mx:HTTPService id="MyService" url="data.xml" result="resultHandler(event)" resultFormat="e4x"/>

private function resultHandler(event:ResultEvent):void {

    XMLData = event.result as XML;

    var ver:String = XMLData.*::version; // ver = 1.0
    var id:String = XMLData.*::NameOfChild1.NameofChild2.GeneralData.Identifier; //empty string
}
4

1 回答 1

11

每个元素都在您的默认命名空间中命名,因此您需要限定每个级别:

var id:String = XMLData.*::NameOfChild1.*::NameOfChild2.*::GeneralData.*::Identifier;
// or
var n:Namespace = XMLData.namespace();
var id:String = XMLData.n::NameOfChild.n::NameOfChild2.n::GeneralData.n::Identifier;

您可以使用“默认 xml 名称空间”指令设置默认名称空间:

default xml namespace = new Namespace("http://www.theaddress.com/file");
var id:String = xml.NameOfChild1.NameOfChild2.GeneralData.Identifier;
于 2009-12-05T01:51:49.133 回答