簡體   English   中英

通過屬性獲取xml對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM