我有一个包含更多节点的现有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包。
有没有人知道如何插入这样的节点?
答案 0 :(得分: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
答案 1 :(得分:0)