我尝试搜索答案,但由于 XMLBUILDER 上的问题数量有限,无法找到。因此,如果发现重复问题,真的很抱歉。
我正在使用XMLBUILDER
Node.js 模块为我的项目创建 XML。我有一个可以为我创建 XML 的函数,但由于某种原因,该root
元素总是存储以前的值,因此每次 XML 都会附加以前的值,我得到它两次。
这是创建 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 个元素并单击 SUBMIT 按钮以创建 XML,那么首先它会使用 2 个元素正确创建 XML,但是当我再次单击它时,它将再次创建 XML 以及以前的值所以我会得到4个元素。
我知道如果将root
标签放在函数中,那么我会为数组中我不想要的每个元素获取两次 Header。我只想为整个 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
元素自动完成的。