答えを検索してみましたが、XMLBUILDER に関する限られた数の質問が見つかりませんでした。したがって、重複が見つかった場合は本当に申し訳ありませんが、質問を投稿してください。
XMLBUILDER
プロジェクトの XML を作成するために Node.js モジュールを使用しています。私は XML を作成する関数を持っていますが、何らかの理由により、root
要素は常に以前の値を格納しているため、XML に以前の値が追加されるたびに 2 回取得します。
XML を作成する Node.js コントローラーは次のとおりです。
var root = builder.create('Header')
root.att(currentTime)
exports.createXMLData = function(Query,callback){
var input = Query.input;
var OuterTag = root.ele(input.Type)
//Add the time to XML
OuterTag.ele('time', input.EventTime).up()
//Add the reason to the XML
OuterTag.ele('reason',input.ErrorReason)
//Like this I have many more tags
xml = root.end({ pretty: true});
callback(xml);
}
一連の値を持つ配列があり、すべての値を追加する単一の XML を作成する必要があるroot
ため、ヘッダーを毎回追加したくないので外側に配置します。配列内のすべての要素に対して、関数を呼び出してcreateXMLData
、必要な XML を作成し、自分自身を XML に追加できるようにしますが、この関数を呼び出すたびに、以前の値が追跡され、新しい値が取得されます。過去価値。
例:配列に2つの要素があり、送信ボタンをクリックしてXMLを作成すると、最初は2つの要素でXMLが正しく作成されますが、もう一度クリックすると、以前の値とともにXMLが再度作成されるので、 4 つの要素を取得します。
関数内にroot
タグを配置すると、配列内の要素ごとにヘッダーが2回取得されますが、これは望ましくありません。XML全体に対してヘッダーを1つだけにしたい。関数内でを使用してルート要素を空にしようとしましたroot = ""
が、エラーがスローされます。
私が見逃しているのは小さなことだと確信していますが、それを理解することはできません。誰かがこれで私を助けてくれますか?
したがって、初めて作成すると、次のような XML が得られます。
<?xml version="1.0"?>
<header>
<time> 2020-08-20T09:35:25+02:00 </time>
<reason> dummyReason </reason>
<time> 2020-08-20T09:35:30+02:00 </time>
<reason> dummyReason </reason>
</header>
[送信] ボタンをクリックして再度作成すると、次のようになります。
<?xml version="1.0"?>
<header>
<time> 2020-08-20T09:35:25+02:00 </time>
<reason> dummyReason </reason>
<time> 2020-08-20T09:35:30+02:00 </time>
<reason> dummyReason </reason>
<time> 2020-08-20T09:36:25+02:00 </time>
<reason> dummyReason </reason>
<time> 2020-08-20T09:36:30+02:00 </time>
<reason> dummyReason </reason>
</header>
配列要素を呼び出すたびに要素を追加するわけではないことに注意してください。root
これは、要素によって自動的に行われます。