Kay*_*yla 2 php xml dom document
好的,这是一个非常常见的xml解析方法,获取子节点,但它只是没有工作它应该如何...
我不能从我的根元素中获取一个childNodes数组,但是当我们有子节点时,我可以从任何其他节点获取它,这不是问题.每当我遇到从这个文档元素中获取子节点时,我似乎无法获得的不仅仅是第一个孩子.
我需要从文档元素中获取所有第一级节点.
$xdoc=createDOMDocument($file);
$all_children= $xdoc->documentElement->childNodes;
echo count($all_children);
function createDOMDocument($file){
$xdoc = new DOMDocument();
$xdoc->formatOutput = true;
$xdoc->preserveWhiteSpace = false;
$xdoc->load($file);
return $xdoc;
}
Run Code Online (Sandbox Code Playgroud)
但这只会输出"1",它找不到所有节点,当我试图输出它时,它总是停在第一个节点.这对我来说毫无意义.
它在下面找到的唯一节点是:
<title>some title</title>
Run Code Online (Sandbox Code Playgroud)
如果我删除该节点,它会找到topicmeta等,但绝不会将每个节点都放入一个我需要的数组中.
这是XML:
<?xml version="1.0" encoding="UTF-8"?>
<map title="mytitle" xml:lang="en-us">
<title>some title</title>
<topicmeta>
<prodinfo>
<prodname>a product</prodname>
<vrmlist>
<vrm version="8.5"/>
</vrmlist>
<platform/>
</prodinfo>
</topicmeta>
<topichead navtitle="cat1" id="topichead4f53aeb751c875.38130575">
<topichead navtitle="another topic"/>
</topichead>
<topichead navtitle="cat2" id="topichead4f53aeb3596990.18552413"/>
<topichead navtitle="cat3" id="topichead4f52fd157487f9.21599660"/>
</map>
Run Code Online (Sandbox Code Playgroud)
小智 9
这对我有用......
$xml = new DOMDocument();
$xml->load('read.xml');
$root = $xml->documentElement;
foreach($root->childNodes as $node){
print $node->nodeName.' - '.$node->nodeValue;
}
Run Code Online (Sandbox Code Playgroud)
我确实需要换<topichead navtitle="cat3" id="topichead4f52fd157487f9.21599660">到<topichead navtitle="cat3" id="topichead4f52fd157487f9.21599660" />