Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析XML:获取每个父节点的子节点_Php_Xml_Parsing_Nodes_Treenode - Fatal编程技术网

Php 解析XML:获取每个父节点的子节点

Php 解析XML:获取每个父节点的子节点,php,xml,parsing,nodes,treenode,Php,Xml,Parsing,Nodes,Treenode,我尝试了很多不同的解决方案,但我对这一点还不熟悉 我有这样一个xml树: <book> <author> First author </author> <title> aaaa </title> <price> 111 </price> </book> <book> <author> Second author </author> <tit

我尝试了很多不同的解决方案,但我对这一点还不熟悉

我有这样一个xml树:

<book>
  <author> First author </author>
  <title> aaaa </title>
  <price> 111 </price>
</book>
<book>
  <author> Second author </author>
  <title> bbbb </title>
  <price> 222 </price>
</book>
<book>
  <author> Third author </author>
  <title> cccc </title>
  <price> 333 </price>
</book>`
可能吗? 非常感谢。

您可以使用该类来解析xml,请注意,xml必须是有效的:

// create a DOMDocument object and load your xml data
$doc = new DOMDocument();
$doc->loadXML($xmlString);

// get all book sections
$books = $doc->getElementsByTagName('book');

// loop through each item and display information
foreach ($books as $book) {
    print $book->getElementsByTagName('author')->item(0)->nodeValue . ',<br />';
    print $book->getElementsByTagName('title')->item(0)->nodeValue . ',<br />';
    print $book->getElementsByTagName('price')->item(0)->nodeValue . '<br /><br />';
}
请注意,第二个示例仅在您的xml被认为格式良好时才起作用,您可以将当前标记包装在
之间:


第一作者
aaaa
111
...

您尝试过什么?你看了吗?非常感谢,这很有效。我已经在尝试使用DOMDocument,但是我遗漏了一些东西。我只想问一个问题:变量$key是用来做什么的?我不明白这段话。我调整了代码以获得更多节点。。但我真的不理解“as$key”部分,那是我在其他尝试中丢失的部分,事实上,失败了。有一个我可以更好地研究的源代码?您不需要在循环中使用
$key
。如果没有它,应该可以正常工作。我编辑了我的答案并添加了另一种方法来执行同样的操作。很抱歉,第二个代码只打印“,
”,而不打印节点的值。@Rain\u xx-对我来说很好,您确定有有效的xml标记吗?它是否包含根元素?
// create a DOMDocument object and load your xml data
$doc = new DOMDocument();
$doc->loadXML($xmlString);

// get all book sections
$books = $doc->getElementsByTagName('book');

// loop through each item and display information
foreach ($books as $book) {
    print $book->getElementsByTagName('author')->item(0)->nodeValue . ',<br />';
    print $book->getElementsByTagName('title')->item(0)->nodeValue . ',<br />';
    print $book->getElementsByTagName('price')->item(0)->nodeValue . '<br /><br />';
}
// create a SimpleXMLElement
$xmlDoc = simplexml_load_string($xmlString);

// get all children of the first element
$books = $xmlDoc->children();

// loop through each item and display information
foreach ($books as $book) {
    print $book->author . ',<br />';
    print $book->title . ',<br />';
    print $book->price . '<br /><br />';
}
<books>
  <book>
    <author> First author </author>
    <title> aaaa </title>
    <price> 111 </price>
 </book>
 ...
</books>