仅解析一些具有相同名称的xml元素

时间:2011-10-05 17:41:57

标签: php xml parsing

我有以下xml但只想返回例如流派&演员

<properties>
  <group>
    <name>Product properties</name>
     <property>
       <id>43560296</id>
         <name>Product Title</name>
           <value>The Ultimate Ronnie Barker Collection</value>
     </property>
     <property>
       <id>43560273</id>
         <name>Genre</name>
           <value>Television</value>
     </property>
     <property>
       <id>43560297</id>
         <name>Actors</name>
           <value>David Jason , Richard Beckinsale , Ronnie Barker , Fulton McKay , Nicholas Lindhurst</value>
     </property>
     <property>
      <id>43560301</id>
       <name>Publisher</name>
         <value>2 Entertain Video</value>
     </property>
  </properties>

简单地说:

  $xml->group->name->property[1]->id->name->value (for genre)

  $xml->group->name->property[2]->id->name->value (for actors)

似乎对我不起作用

感谢您的帮助。

的Darren

2 个答案:

答案 0 :(得分:2)

XPath是您的朋友,可通过xpath()方法使用SimpleXML。

$properties = $xml->xpath('/properties/group/property[name="Genre" or name="Actors"]');

此外,关于您的$xml->group->name…代码,可能会(重新)阅读文档页面“Basic SimpleXML usage”。


<强>加成

如果您想深入研究XML以获得单个匹配property,那么根据需要调整XPath以适应。

$genres = $xml->xpath('/properties/group/property[name="Genre"]');
// Remember $genres is an array even if there is only one (or none) item.
echo $genres[0]->value;

答案 1 :(得分:0)

$properties = new SimpleXMLElement($yourXMLhere);

echo $properties->group->name->property[1]->id->value; 

echo $properties->group->name->property[2]->id->value; 

是对的。给我们一些代码。

编辑:XML似乎已损坏,关闭<group>标记,并检查“树”。首先,<property>为IN <name>