所有
我有一个类似于这样的XML文档:
<root>
<profile>
<childA>
<childB>
<childC>
<profile>
<blah>
<blah>
<foo>
<bar>
<root>
我希望能够抓住'profile'节点,然后遍历它的子节点('childA','childB'等)
到目前为止,我的代码看起来像这样:
$doc = new DomDocument();
$doc->loadXML(file_get_contents("php://input"));
$profile_node = $doc->getElementsByTagName("profile")->item(0);
到目前为止,这么好。 $ profile_node有我想要的。
在PHP4中,我猜你会做这样的事情:
$childnodes = $profile_node->child_nodes();
foreach ($childnodes as $node) {
// do something with this node
}
但是,我在PHP5中找不到child_nodes()的等价物。
由于我几乎是关于PHP的菜鸟,我真的很感激代码示例,所以我可以看到确切的语法。
答案 0 :(得分:4)
根据php manual,DomNode类有一个public $ childNodes变量。您可以直接访问它:
foreach ($profile_node->childNodes as $node) {
// do something with this node
}
答案 1 :(得分:1)
如果您只需要阅读,我建议使用simplexml包:
$xml = simplexml_load_file('php://input');
$childnodes = $xml->xpath("//profile/child::*");
foreach($childnodes as $node){
// do something
}
SimpleXML包和DOM包是可以互换的:您可以使用dom_import_simplexml()
将SimpleXML导入DOM对象。