simpleXML访问命名空间具有相同名称

时间:2013-09-12 13:02:11

标签: php xml

我是XML名称空间的新手,在标题上搜索显示有些人遇到同样的问题,但不知怎的,它对我不起作用。

XML情况:

<abc:documents xmlns:abc="http://www.someurl.com/xml/abc/dtd" count="1">
<def:doc xmlns:def="http://www.someurl.com/xml/def/dtd">
<def:meta>
    <def:hello-world>hi there</def:hello-world>
</def:meta>
<def:serial-item>
    <ghi xmlns="http://www.someurl.com/xml/ja/dtd" docsubtype="fla" xml:lang="en" version="5.1">
        <item-info>
            <helloworld>hi there</helloworld>
        </item-info>
    </ghi>    
</def:serial-item>
</def:doc>
</abc:documents>

当我这样做时:

$xml      = new SimpleXMLElement('<abc:documents xmlns:abc="http://www.someurl.com/xml/abc/dtd" count="1">...THE ABOVE XML...</abc:documents>');
$doc      = $xml->children('def', TRUE);
$data     = $doc->children('def', TRUE);
header ("Content-Type:text/xml");
echo $data->asXML();

它只显示def:meta

的内容

但是当我这样做时:var_dump(count($data))它显示正确(2)

所以人们期望这样做:

foreach($data as $dataPiece){
    echo $dataPiece->asXML();
    echo '--------------';
}

但只是显示def:meta的内容......

所以问题是:我该如何度过:<ghi>

0 个答案:

没有答案