![](/img/trans.png)
[英]How to get the value of the xml object with @attribute key=>value option in php
[英]Get an xml object by attribute
我可以使用以下方法顯示xml中的所有元素:
foreach($xml->children() as $child)
{
echo $child->title;
}
?>
但是,我怎么會顯示這本書的“作者”誰的頭銜是“帽子里的貓”? 也就是說,如何獲得具有特定屬性的孩子的對象?
謝謝,
大衛
使用XPath可以輕松完成此操作。 不確定您到底想要什么。
$sxml = new SimpleXMLElement($xml_string);
$arrayOfNodes = $sxml->xpath('//child[@attr="value"]/..');
foreach ($arrayOfNodes as $node) {
// do stuff
}
上面的內容將為您提供包含具有attr="value"
屬性的<child>
節點的所有節點。
$sxml = new SimpleXMLElement($xml_string);
$arrayOfNodes = $sxml->xpath('//parent[@attr="value"]/*');
foreach ($arrayOfNodes as $node) {
// do stuff
}
上面的內容將為您提供具有attr="value"
屬性的<parent>
節點的所有子級。
當然,如果您提供了XML結構,則可以使該示例不太通用。
啊,這似乎做了這個工作:
$res = $xml->xpath("/bookstore/book[title = 'Everyday Italian']");
echo $res[0]->author
?>
這里有一些很好的解釋: http : //www.w3schools.com/XPath/xpath_syntax.asp
謝謝你的指針!
大衛
結構是這樣的:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
我所知道的唯一術語是“書店”是“根節點”。 您的回復中“父節點”和“子節點”之間有什么區別?
如果我想輸出名為“Everyday Italian”的書的作者,它看起來像這樣:
<?php
$xml = simplexml_load_file("bookstore.xml");
$arrayOfNodes = $xml->xpath('//parent[@title="Everyday Italian"]/*');
foreach ($arrayOfNodes as $node) {
echo $node->author;
}
?>
?
謝謝,大衛
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.