Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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

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 - Fatal编程技术网

Java 用于编辑具有与其他元素中包含的名称和值相同的名称和值的单个子元素的xpath查询

Java 用于编辑具有与其他元素中包含的名称和值相同的名称和值的单个子元素的xpath查询,java,xml,xpath,Java,Xml,Xpath,我试图更新一个元素中的值(一个接一个),但我更新了所有满足xpath条件的元素。XML并不复杂,例如: <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <row> <ELEMENT1>W</ELEMENT1> <ELEMENT2>IN</ELEMENT2> <ELEMENT3>RP</ELEMENT3>

我试图更新一个元素中的值(一个接一个),但我更新了所有满足xpath条件的元素。XML并不复杂,例如:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
    <ELEMENT1>W</ELEMENT1>
    <ELEMENT2>IN</ELEMENT2>
    <ELEMENT3>RP</ELEMENT3>
    <ELEMENT4>KKK</ELEMENT4>
  </row>
  <row>
    <ELEMENT1>2</ELEMENT1>
    <ELEMENT2>ARQ</ELEMENT2>
    <ELEMENT3>MR</ELEMENT3>
    <ELEMENT4>AC</ELEMENT4>
  </row>
  <row>
     <ELEMENT1>3</ELEMENT1>
    <ELEMENT2>I</ELEMENT2>
    <ELEMENT3>RP</ELEMENT3>
    <ELEMENT4>KKK</ELEMENT4>
  </row>
  <row>
    <ELEMENT1>1</ELEMENT1>
    <ELEMENT2>CC</ELEMENT2>
    <ELEMENT3>XX</ELEMENT3>
    <ELEMENT4>I</ELEMENT4>
  </row>
  <row>
     <ELEMENT1>12</ELEMENT1>
    <ELEMENT2>IN</ELEMENT2>
    <ELEMENT3>3</ELEMENT3>
    <ELEMENT4></ELEMENT4>
  </row>
</root>
它会更改所有行中所有元素4的值。如果我尝试以下操作:

/root/row/ELEMENT3[text()='RP'][/root/row/[position()='3']]

结果是一样的。我可以使用什么xpath查询表达式将子元素的值编辑到元素中,而不影响其他元素中具有相同名称的子元素?…非常感谢

如果您想获得
第三行的
元素4
,那么只需使用:

/root/row[3]/ELEMENT4


您不需要使用
text()
条件。

如果要获取
第三行的
元素4
,只需使用:

/root/row[3]/ELEMENT4


您不需要使用
text()
条件。

XPath查询是我最早使用但不起作用的查询之一,到目前为止唯一起作用的是:/Root/row/ELEMENT4[text()='KKK'],但它更改了所有具有KKK值的元素4,谢谢,您使用的是哪个XPath引擎?我在上进行了测试,它正在运行javax.xml.parsers.*,javax.xml.transform.*,javax.xml.xpath.*,org.w3c.dom.*用于转换XML DOM、管理文件和XPath查询的Java6类。对于具有更复杂查询的其他XML文件,我没有遇到任何问题,但是使用这个简单的XML,这是非常奇怪的。xpath
/root/row[3]/ELEMENT4
返回给您什么?最后,xpath查询工作正常,问题是从迭代java获得的行位置数和该数字不正确,我创建了一个函数来返回子节点在其父节点中的位置,并使用该数字来标识每一行的位置……/root/row[3]/ELEMENT4[text()='KKK']XPath查询是我使用的第一个查询之一,但不起作用,到目前为止唯一起作用的是:/root/row/ELEMENT4[text()='KKK']但是它改变了所有具有KKK值的元素4,谢谢,您使用的是哪个Xpath引擎?我在上进行了测试,它正在运行javax.xml.parsers.*,javax.xml.transform.*,javax.xml.xpath.*,org.w3c.dom.*用于转换XML DOM、管理文件和XPath查询的Java6类。对于具有更复杂查询的其他XML文件,我没有遇到任何问题,但是使用这个简单的XML,这是非常奇怪的。xpath
/root/row[3]/ELEMENT4
返回给您什么?最后,xpath查询工作正常,问题是从迭代java获得的行位置数和该数字不正确,我创建了一个函数来返回父节点中子节点的位置,并使用该数字来标识每行的位置……/root/row[3]/ELEMENT4[text()=“KKK”]您可能需要提供一个http://www.w3.org/2001/XMLSchema-instance
名称空间。您可能需要提供一个映射
http://www.w3.org/2001/XMLSchema-instance
名称空间。例子。
/root/row/ELEMENT3[text()='RP'][/root/row/[position()='3']]