使用PHP搜索和显示XML内容

时间:2011-12-05 13:48:48

标签: php xml

我有一个填充'producer'的XML文件。

以下是文件的示例:

<producer>
   <name>John Doe's Fish Emporium!</name>
   <owner>John Doe</owner>
   <address>
      <civic>123</civic>
      <mailing>Example Drive</mailing>
      <town>Halifax</town>
      <province>Nova Scotia</province>
      <postal>A1B 2C3</postal>
      <phone>902-123-4567</phone>
      <fax>902-098-7654</fax>
      <email>john@example.com</email>
      <website>www.example.com</website>
   </address>
   <products>
      <product>Pollock (Saithe)</product>
      <product>Flounder/Sole</product>
      <product>Salmon, Farm Raised</product>
      <product>Mussels, Blue</product>
   </products>
   <exports>
      <region>Europe</region>
      <region>North America</region>
      <region>Pacific Rim</region>
      <region>United States</region>
   </exports>
</producer> 

用户将在html表单中输入一个值,该表单将在XML文档中搜索该关键字,然后打印出整个生产者。因此,例如,如果用户搜索产品Salmon,搜索将吐出上面的整个生产者。如何检测我在XML文档中的位置,然后回显整个生产者?

谢谢!

3 个答案:

答案 0 :(得分:2)

我假设你的生产者元素是生产者根节点的直接子节点。如果没有,请相应调整:

/producers/producer[descendant::*[contains(text(), "Salmon")]]

这将找到在其任何子文本节点中具有文本Salmon的所有生成器元素。此XPath允许您搜索所有子节点,例如地区,城镇,产品等 - 无论水平如何。

有关样板代码,请参阅Implementing condition in XPath

答案 1 :(得分:0)

这已经多次回答,请查看右侧的相关链接。以下是您的需求:

simplexml

DOM

XPath

答案 2 :(得分:0)

这可能有用: -

$obj   = simplexml_load_string(...);
$expr  = "/producer/products/product[contains(text(),'salmon')]/../..";
$found = $obj->xpath($expr);

享受,玩得开心!