Parse XML: 获取每个父节点的子节点
Parse XML: Get child nodes for each parent node
我尝试了很多不同的解决方案,但我只是新手..
我有一棵这样的 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>`
我需要在我的 php 代码中解析它以获得 table 例如
First author,
aaaa,
111
Second author,
bbbb,
222
Third author,
cccc,
333
可能吗?
真的谢谢你。
您可以使用 DOMDocument
class 来解析您的 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 数据,您可以使用 DOMDocument::load()
一种更简单的方法是使用 SimpleXML
:
// 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 />';
}
请注意,第二个示例仅在您的 xml 被认为格式正确时才有效,您可以将当前标记包装在 <books></books>
:
之间
<books>
<book>
<author> First author </author>
<title> aaaa </title>
<price> 111 </price>
</book>
...
</books>
我尝试了很多不同的解决方案,但我只是新手..
我有一棵这样的 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>`
我需要在我的 php 代码中解析它以获得 table 例如
First author,
aaaa,
111
Second author,
bbbb,
222
Third author,
cccc,
333
可能吗? 真的谢谢你。
您可以使用 DOMDocument
class 来解析您的 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 数据,您可以使用 DOMDocument::load()
一种更简单的方法是使用 SimpleXML
:
// 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 />';
}
请注意,第二个示例仅在您的 xml 被认为格式正确时才有效,您可以将当前标记包装在 <books></books>
:
<books>
<book>
<author> First author </author>
<title> aaaa </title>
<price> 111 </price>
</book>
...
</books>