Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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_Dom_Xpath_Xquery Update - Fatal编程技术网

Java xPath表达式创建或修改节点

Java xPath表达式创建或修改节点,java,xml,dom,xpath,xquery-update,Java,Xml,Dom,Xpath,Xquery Update,我想了解如何在简单的XML文件中创建或修改节点 以下是XML文件: <?xml version = "1.0"?> <myRootNode> <myNode a="P" b="Q" c="R"> <subNode id= "1"> <x>more text</x> <y>some more</y&

我想了解如何在简单的XML文件中创建或修改节点

以下是XML文件:

<?xml version = "1.0"?>
    <myRootNode>
        <myNode a="P" b="Q" c="R">
            <subNode id= "1">
                <x>more text</x>
                <y>some more</y>
            </subNode>
            <subNode id="2">
                <x>blah</x>
                <y><blah blah</y>
            </subNode>
        </myNode>
        <myNode a="S" b="T" c="U">
            <subNode id= "1">
                <x>some more text</x>
                <y>even more</y>
            </subNode>
            <subNode id="2">
                <x>abcdefg</x>
                <y>hijklmno</y>
            </subNode>
        </myNode>
    </myRootNode>
我还想知道如何使用纯xPath插入节点:

<subNode id="3">
    <x>pqrst</x>
    <y>uvxyz</y>
</subNode>

如果可能,请提供Java代码。谢谢。

不幸的是,XPath本身不能用于修改XML文档。如果可能,请尝试使用来修改xml

<subNode id="3">
    <x>pqrst</x>
    <y>uvxyz</y>
</subNode>
有很多命令行选项:

  • 移动
  • 删除
  • 改名
  • 更新
  • 附加
  • 插入

XPath仅用于检索。如果要修改XML文档,可以使用XSLT或XQuery更新。@IanRoberts我可以更新解决方案吗?@dirkk我如何使用XQuery进行更新/插入。您能提供一个解决方案吗?您必须使用XQuery更新。但是,您需要一个支持XQuery更新的处理器。您应该首先检查您想要使用什么技术,然后再回答一个特定的问题。@dirkk我将通过Java代码进行此操作。在Java中,我使用的是spring框架。您能为我提供一个使用JAVA技术中的xQuery以及我需要导入以使其工作的包/API的特定示例的解决方案吗。这是紧急情况。
/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode[@id="2"]
<subNode id="3">
    <x>pqrst</x>
    <y>uvxyz</y>
</subNode>
xml ed -i "/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode" -t elem -n "subNode" example.xml
xml ed -i "/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode[1]" -t attr -n "id=3" example.xml
xml ed -i "/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode[@id='3']" -t elem -n "x" example.xml
xml ed -i "/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode[@id='3']/x" -t text -n "pqrst" example.xml
xml ed -i "/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode[@id='3']" -t elem -n "y" example.xml
xml ed -i "/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode[@id='3']/y" -t text -n "uvxyz" example.xml