0

新しい子ノードをxmlファイルに追加しようとしています。これまでのところ、私はこのコードを持っています:

var libxml = require('libxmljs');
var xml =  '<?xml version="1.0" encoding="UTF-8"?>' +
           '<root>' +
               '<child foo="bar">' +
                   '<grandchild baz="fizbuzz"><blah>grandchild content</blah></grandchild>' +
               '</child>' +
               '<child foo="bar1">' +
                   '<grandchild baz="fizbuzz">grandchild content 1</grandchild>' +
               '</child>' +
               '<child foo="bar3">' +
                   '<grandchild baz="fizbuzz3">grandchild content 3</grandchild>' +
               '</child>' +
               '<sibling>with content!</sibling>' +
           '</root>';


var xmlDoc = libxml.parseXml(xml);
var allxml = xmlDoc.root();  //store all nodes as allxml
var allNodes = xmlDoc.childNodes(); //all child nodes to array
var elem = xmlDoc.node('name1');
var newChild = libxml.Element(xmlDoc, 'new-child');
elem.addChild(newChild);

しかし、これを実行すると、次のエラーが発生します。

return this._root(elem);
            ^
Error: Holder document already has a root node

誰かがここで何が起こっているのか知っていますか?

4

1 に答える 1

0

問題はxmlDoc.node()です。ドキュメント上で、このメソッドは新しいルートノードを作成しようとします。必要なのは、現在のルートノードを返すxmlDoc.root()です。ただし、このコードサンプルには他にも問題があります。ドキュメントhttps://github.com/polotek/libxmljs/wikiを参照してください

于 2012-12-20T09:06:32.397 に答える