【问题标题】:Is my XPath syntax correct?我的 XPath 语法是否正确?
【发布时间】:2013-04-22 10:58:01
【问题描述】:

这是我的 xml:

<?xml version="1.0" encoding="UTF-8"?>
       <check>
           <val>
              <Samsung>
                 <name value="galaxy" />
                 <name value="galaxy" />
                 <name value="galaxys" />
                 <id value="123" />
                 <id value="123" />
                 <name2 value="galaxy" />
             </Samsung>

             <htc>
                 <name value="galaxy" />
                 <name value="galaxy" />
                 <name value="galaxys" />
                 <id value="123" />
                 <id value="123" />
                 <name2 value="galaxy" />
    </htc>
</val>

我的 Xpath 表达式是:

XPathExpression expr = XPathFactory.newInstance().newXPath()
                .compile("//Samsung/name/@value");

在上面的 xml 中 &lt;name value="galaxy" /&gt; 有副本,所以我试图删除重复项。但是在我的代码中,我得到了 value="galaxys".. 我不应该删除的节点。另外,正确的 XPath 语法应该是什么,以便我可以使用它来删除重复项,它应该在整个 xml 中同时匹配元素和属性值(例如:)

【问题讨论】:

标签: java xml xpath xml-parsing


【解决方案1】:

表达式 "//Samsung/name/@value" 返回 'Samsung' 节点下所有 'name' 节点的 value 属性,因此它应该返回 'galaxys'

如果您想将条件设置为仅返回 value='galaxy' 的节点,您可以使用此表达式 //三星/name[@value='galaxy']/

【讨论】:

    【解决方案2】:

    使用xml 代码尝试以下操作:

               <val>
                  <Samsung>
                     <name value="galaxy" />
                     <name value="galaxy" />
                     <name value="galaxys" />
                     <id value="123" />
                     <id value="123" />
                     <name2 value="galaxy" />
                 </Samsung>
    
                 <htc>
                     <name value="galaxy" />
                     <name value="galaxy" />
                     <name value="galaxys" />
                     <id value="123" />
                     <id value="123" />
                     <name2 value="galaxy" />
        </htc>
    </val>
    

    XPATH:

    //val/Samsung/child::*[@value = "galaxy"]
    

    输出:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多