【问题标题】:Java xPath expression - Change the value of a node not foundJava xPath 表达式 - 更改未找到节点的值
【发布时间】:2016-04-20 12:40:50
【问题描述】:

今天我试图知道一个节点中的一个值,但有时我有一个封闭的节点......例如 XML:

<Info>  
    <Personne>
        <field name="Name" type="String">
             <value type="String"> TOTO </value>
        </field>>
        <field name="CountryCode" type="String">
            <value type="String"> Fr </value>
        </field>
    </Personne>
    <Personne>
         <field name="Name" type="String">
             <value type="String"> TOTO </value>
        </field>>
        <field name="CountryCode" type="String">
            <empty />
        </field>
    </Personne>
</Info>

要读取我的 XML 文件(在我的 java 代码中),我使用:

expression = "/Personnes/field[@name='Name']/value | /Personnes/field[@name='CountryCode']/value ";

NodeList nodes = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
        System.out.print(nodes.item(i).getFirstChild().getNodeValue()
    }

但我想当 xPath 读取 &lt;empty /&gt; 时,它会通过示例向我显示“EMPTY”而不是任何内容..

非常感谢!

【问题讨论】:

    标签: java xml xpath expression


    【解决方案1】:

    假设field 只能有valueempty 子元素,那么您可以尝试将XPath 从/value 修改为/*。这样,如果找不到 value 元素,XPath 仍会返回一些内容

    expression = "/Personnes/field[@name='Name']/* | /Personnes/field[@name='CountryCode']/*";
    

    【讨论】:

    • @Jason 你需要检查getFirstChild() 是否返回了一些东西。如果不是,就打印"EMPTY",否则可以继续打印节点值...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多