1

我有一个包含更多节点的现有 XML 文档,我想插入一个新节点,但在某个位置。

该文档看起来像:

<root>   
    <a>...</a>
    <c>...</c>
    <e>...</e>
</root> 

...可以认为是xml标签a.../a、c.../c、e.../e。(格式问题)

新节点应按字母顺序插入节点之间,结果是:

<root>
    <>
    new node
    <>
    <>
    new node
    <>
    <>
    <>
    new node

如何在 TCL 中使用 XPath 查找现有节点并在其前后插入新节点。

我还想保留顺序,因为 XML 文档中的现有标签是按字母顺序排列的。

目前我正在使用 tdom 包。

有谁知道如何插入这样的节点?

4

2 回答 2

2

如果你有这个文件,demo.xml

<root>
    <a>123</a>
    <c>345</c>
    <e>567</e>
</root>

并想去这个(模空白):

<root>
    <a>123</a>
    <b>234</b>
    <c>345</c>
    <d>456</d>
    <e>567</e>
</root>

然后这是执行此操作的脚本:

# Read the file into a DOM tree
package require tdom
set filename "demo.xml"
set f [open $filename]
set doc [dom parse [read $f]]
close $f

# Insert the nodes:
set container [$doc selectNodes /root]

set insertPoint [$container selectNodes a]
set toAdd [$doc createElement b]
$toAdd appendChild [$doc createTextNode "234"]
$container insertAfter $insertPoint $toAdd

set insertPoint [$container selectNodes c]
set toAdd [$doc createElement d]
$toAdd appendChild [$doc createTextNode "456"]
$container insertAfter $insertPoint $toAdd

# Write back out
set f [open $filename w]
puts $f [$doc asXML -indent 4]
close $f
于 2011-05-07T06:07:05.663 回答
0

我很确定Tcl wiki 上的 tdom教程回答了你所有的问题。wiki上还有一些关于Xpath的附加信息。

于 2011-05-07T05:00:11.993 回答