SimpleXML:选择具有特定属性值的元素

SimpleXML:选择具有特定属性值的元素

在XML文档中,我有共享名称的元素,但是属性的值定义了它是什么类型的数据,我想从文档中选择所有具有一定值的元素。我是否需要使用XPath(如果需要,您可以建议正确的语法)还是有更优雅的解决方案?

下面是一些XML示例:

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

我想选择所有的内容<data>标记<object>谁的类型是me.

PS-我正试图用PHP与NetflixAPI进行接口-这对我的问题来说并不重要,但如果你想提出一个好的/更好的方法来这样做,我会全神贯注的。


海绵宝宝撒
浏览 386回答 2
2回答

繁花如伊

试试这个XPath:/object/data[@type="me"]因此:$myDataObjects&nbsp;=&nbsp;$simplexml->xpath('/object/data[@type="me"]');如果object不是文档的根,请使用//object/data[@type="me"]相反。

慕姐4208626

我只是做了一个函数来帮我做到这一点,不过它只抓住了第一个结果。你的里程可能不同。function&nbsp;query_attribute($xmlNode,&nbsp;$attr_name,&nbsp;$attr_value)&nbsp;{ &nbsp;&nbsp;foreach($xmlNode&nbsp;as&nbsp;$node)&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;switch($node[$attr_name])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;$attr_value: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$node; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;}}用法:echo&nbsp;query_attribute($MySimpleXmlNode->Customer,&nbsp;"type",&nbsp;"human")->Name;(用于下面的XML)<Root><Customer&nbsp;type="human"><Name>Sam&nbsp;Jones</name></Customer></Root>
打开App,查看更多内容
随时随地看视频慕课网APP