xPath表达式创建或修改节点



我想了解如何在一个简单的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>

我想知道如何编辑节点的内部文本。编辑通过计算表达式

获得的节点的内部文本
/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode[@id='1']/x

我还想知道如何使用纯xPath插入节点:

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

在通过求值表达式得到的节点之后:

/myRootNode/myNode[@a='P' and @b='Q' and @c='R']/subNode[@id="2"]

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

遗憾的是,XPath本身不能用于修改XML文档。如果可能的话,尝试使用http://xmlstar.sourceforge.net/docs.php来修改您的xml。

<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

有很多命令行选项:

  • 删除
  • rename
  • 插入…

XQuery是你的朋友:

insert node <subNode id="3"><x>pqrst</x><y>uvxyz</y></subNode> into //myRootNode

相关内容

  • 没有找到相关文章

最新更新