Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java xPath表达式-更改未找到的节点的值_Java_Xml_Xpath_Expression - Fatal编程技术网

Java xPath表达式-更改未找到的节点的值

Java xPath表达式-更改未找到的节点的值,java,xml,xpath,expression,Java,Xml,Xpath,Expression,今天我试图知道一个节点中的值,但有时我有一个闭合节点。。。例如,XML: <Info> <Personne> <field name="Name" type="String"> <value type="String"> TOTO </value> </field>> <field name="CountryCode" type

今天我试图知道一个节点中的值,但有时我有一个闭合节点。。。例如,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>

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

expression=“/Personnes/field[@name='name']/value |/Personnes/field[@name='CountryCode']/value”;
NodeList节点=(NodeList)xPath.compile(expression).evaluate(document,xpathcontents.NODESET);
对于(int i=0;i
但是我希望xPath在读取
时通过示例显示“空”而不是任何内容


非常感谢!

假设
字段
只能有
子元素,那么您可以尝试将XPath从
/value
修改为
/*
。这样,在没有找到
元素的情况下,XPath仍然会返回一些内容

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

@Jason您需要检查
getFirstChild()
是否返回某些内容。如果不是,只需打印
“EMPTY”
,否则您可以继续打印节点值。。。
expression = "/Personnes/field[@name='Name']/* | /Personnes/field[@name='CountryCode']/*";