SimpleXML:select具有一定属性值的元素

在XML文档中,我拥有共享相同名称的元素,但是属性的值定义了它是什么types的数据,我想从文档中select所有具有特定值的元素。 我是否需要使用XPath(如果是这样,你能build议正确的语法)还是有一个更优雅的解决scheme?

以下是一些XML示例:

<object> <data type="me">myname</data> <data type="you">yourname</data> <data type="me">myothername</data> </object> 

而且我想selecttypes是me<object>的所有<data>标记子元素的内容。

PS – 我正在尝试使用PHP与Netflix API进行交互 – 这对我的问题应该不是问题,但是如果您想提出一个更好/更好的方式来实现这一点,那么我就是所有人。

2 Solutions collect form web for “SimpleXML:select具有一定属性值的元素”

试试这个XPath:

 /object/data[@type="me"] 

所以:

 $myDataObjects = $simplexml->xpath('/object/data[@type="me"]'); 

如果object不是你的文档的根,请使用//object/data[@type="me"]来代替。

我只是为我做了一个function, 它只是抓住了第一个结果。 你的旅费可能会改变。

 function query_attribute($xmlNode, $attr_name, $attr_value) { foreach($xmlNode as $node) { switch($node[$attr_name]) { case $attr_value: return $node; } } } 

用法:

 echo query_attribute($MySimpleXmlNode->Customer, "type", "human")->Name; 

(对于下面的XML)

 <Root><Customer type="human"><Name>Sam Jones</name></Customer></Root> 
  • select其属性以XPath中的某些内容开始的元素
  • HtmlAgilityPackselectchildNodes不是预期的
  • 使用XPath访问XML中的注释
  • 为什么XPath中的索引以1而不是0开头?
  • 如何使用XPath在一组元素中查找属性的最小值?
  • XPath OR运算符用于不同的节点
  • 在xpath中不区分大小写的匹配?
  • 如何在Java中使用XPath读取XML
  • 使用XPath,如何根据文本内容和属性值来select一个节点?
  • XPath:获取子节点包含属性的节点
  • 使用xpath查找节点的位置