【问题标题】:Searching and displaying XML content with PHP使用 PHP 搜索和显示 XML 内容
【发布时间】:2011-12-05 13:48:48
【问题描述】:

我有一个包含“生产者”的 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 文档中的位置,然后回显整个生产者?

谢谢!

【问题讨论】:

    标签: php xml


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      simplexml

      DOM

      XPath

      【讨论】:

      • 我目前正在使用 SimpleXML,但我没有看到任何访问元素父标签的方法。
      • 这可能应该是评论并标记了原始问题
      • 试试 xpath,正如我在编辑中所说,这已经被回答了很多次,如果你没有因为我用参考回答你的问题而不是为你提供答案而拒绝投票,我将不胜感激很容易找到。
      • @Russell Saari 我以后会这样做的。
      • 我想我应该搜索类似的问题。道歉。我没有对你投反对票。
      【解决方案3】:

      这可能会有所帮助:-

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

      享受,玩得开心!

      【讨论】:

        猜你喜欢
        • 2014-04-28
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 2010-09-12
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多