使用PHP进行Xpath查询(取两个值)

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了使用PHP进行Xpath查询(取两个值)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_2@
这是我正在使用的 XML代码

<inventory>
        <drink>
                <lemonade supplier="mother" id="1">
                        <tITle>SuPEr Lemonade</title>
                        <PRice>$2.50</price>
                        <amount>20</amount>
                </lemonade>
                <lemonade supplier="mike" id="4">
                        <title>Lemonade Plus</title>
                        <price>$3.00</price>
                        <amount>20</amount>
                </lemonade>
                <pop supplier="Store" id="2">
                        <title>Poppys</title>
                        <price>$1.50</price>
                        <amount>10</amount>
                </pop>
        </drink>
</inventory>

然后我写了一个简单代码来练习使用xpath:

<?PHP
        $XMldoc = new DOMDocument();
        $xMLdoc->load('sample.xml');

        $xpathVAR = new Domxpath($xmldoc);

        $queryResult = $xpathvar->query('//lemonade/price');
        foreach($queryResult as $result){
                echo $result->textContent;
        }
?>

代码运行良好,按预期输出所有柠檬水价格值.

现在我需要一个XPATH来获取金额= 20的所有项目的TITLE和supplier.

我该怎么做 ?

谢谢

解决方法

使用:

/*/*/*[amount = 20]/@supplier | /*/*/*[amount = 20]/title

这选择:

>任何元素的任何供应商属性,它是XML文档顶级元素的子元素(与/ inventory / drink / lemonade相同,但我喜欢编写更短的XPath表达式),其子元素值具有字符串值可以施放到20号.
>任何元素的标题子元素是XML文档的顶级元素的子元素(与/ inventory / drink / lemonade相同,其子元素值具有字符串值可以施放到20号.

基于xslt的验证:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:template match="node()|@*">
     <xsl:for-each select=
     "/*/*/*[amount = 20]/@supplier
    |
      /*/*/*[amount = 20]/title">

      <xsl:value-of select="."/>
      <xsl:text>&amp;#xA;</xsl:text>
     </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

在提供的XML文档上应用此转换时:

<inventory>
    <drink>
        <lemonade supplier="mother" id="1">
            <title>Super Lemonade</title>
            <price>$2.50</price>
            <amount>20</amount>
        </lemonade>
        <lemonade supplier="mike" id="4">
            <title>Lemonade Plus</title>
            <price>$3.00</price>
            <amount>20</amount>
        </lemonade>
        <pop supplier="store" id="2">
            <title>Poppys</title>
            <price>$1.50</price>
            <amount>10</amount>
        </pop>
    </drink>
</inventory>

它评估XPath表达式并在单独的行上复制所选模式的值:

mother
Super Lemonade
mike
Lemonade Plus

请注意:

通过使用诸如the XPath Visualizer之类的工具可以极大地帮助您学习XPath – 成千上万的人使用它来学习XPath的有趣方式.

@H_403_2@

脚本宝典总结

以上是脚本宝典为你收集整理的使用PHP进行Xpath查询(取两个值)全部内容,希望文章能够帮你解决使用PHP进行Xpath查询(取两个值)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。