Php 解析XML:获取每个父节点的子节点
我尝试了很多不同的解决方案,但我对这一点还不熟悉 我有这样一个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
<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>