用PHP搜索和显示XML内容

用PHP搜索和显示XML内容,php,xml,Php,Xml,我有一个XML文件,里面填充了“producers” 以下是文件外观的示例: <producer> <name>John Doe's Fish Emporium!</name> <owner>John Doe</owner> <address> <civic>123</civic> <mailing>Example Drive</mailin

我有一个XML文件,里面填充了“producers”

以下是文件外观的示例:

<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> 

约翰·多伊的鱼商场!
无名氏
123
示例驱动器
哈利法克斯
新斯科舍省
A1B 2C3
902-123-4567
902-098-7654
john@example.com
www.example.com
波洛克(赛特)
比目鱼
鲑鱼,农场养殖
蓝色贻贝
欧洲
北美
环太平洋
美国
用户将在html表单中输入一个值,该表单将在XML文档中搜索该关键字,然后打印出整个生成器。因此,例如,如果用户搜索产品鲑鱼,搜索将吐出上面的整个生产者。如何检测我在XML文档中的位置,然后回显整个生产者


谢谢

这个问题已经回答了很多次,请查看右侧的相关链接。以下是您需要的:

这可能会有帮助:-

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

享受,享受

我假设您的producer元素是producers根节点的直接子元素。如果不是,则相应调整:

/producers/producer[descendant::*[contains(text(), "Salmon")]]
这将查找在其任何子文本节点中包含文本鲑鱼的所有生产者元素。此XPath允许您搜索所有子节点,例如区域、城镇、产品等,而不考虑级别


有关样板代码,请参阅。

我目前正在使用SimpleXML,但我看不到任何访问元素父标记的方法。这可能应该是一条注释并标记原始问题try xpath,正如我在编辑中所说的,这已经回答了很多次,如果你不只是因为我用推荐信回答了你的问题而拒绝投票,而不是向你提供你很容易找到的答案,我将不胜感激。@Russell Saari我以后会这样做。我想我应该搜索类似的问题。道歉。我没有投你反对票。