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