0

我对 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>

4

0 回答 0