2013-05-21 52 views
-2

如果我有:仅显示在XML具有特定属性在PHP节点

<listing> 
<name>Bob</name> 
<age>20</age> 
<hair>red</hair> 
</listing> 

<listing> 
<name>John</name> 
<age>24</age> 
<hair>black</hair> 
</listing> 

我如何代码我的PHP页面只显示商家信息是否发=黑色

,这样只会拉

<listing> 
<name>John</name> 
<age>24</age> 
<hair>black</hair> 
</listing> 

感谢

+0

您目前如何解析XML?了解您已有的功能很有帮助。 – Ryan

+0

我是一个新手,但它是一个标准的XML文件,像这样拉[http://www.w3schools.com/xml/simple.xml – user2405912

回答

0

使用XPath

// First, your XML must be wraped with some root tag. 
$data = <<<XML 
<root> 
    <listing> 
     <name>Bob</name> 
     <age>20</age> 
     <hair>red</hair> 
    </listing> 

    <listing> 
     <name>John</name> 
     <age>24</age> 
     <hair>black</hair> 
    </listing> 
</root> 
XML; 

// Instancing the SimpleXMLElement within the XML(obviously) 
$xml = new SimpleXMLElement($data); 

// XPath 
$xpath = $xml->xpath("listing[contains(hair,'black')]"); 
/** 
* eXplained XPath: 
*  <listing> that 
*    <hair>'s content is equal black 
*/ 

foreach($xpath as $node){ 
    // just for fun echoes the <results> node 
    echo $node->asXml(); 
} 
相关问题