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 に答える