使用服务器端 suiteScript 2.0 生成 XML

Generate XML using server side suiteScript 2.0

我正在尝试在 2.0 Suitelet 脚本上使用 suitescript 来生成 xml 然后我想 return 将 Xml 作为字符串。请注意,我必须即时构建这个 XML,所以我不能只从文件中读取它。在客户端脚本上,我可以使用本机 javascript 并围绕文档进行构建,但在服务器端,我假设我必须使用 N/XML 模块并利用文档、元素和节点来构建它。
我想 return 作为字符串的 XML 的一个示例可能生成如下:

作为旁注,我希望我不会直接将此作为字符串执行,而是通过不只是构建一个长字符串并将该字符串解析为 XML 来使用 xml 逻辑.

<shipment>
    <book>
        <title>aaa</title>
        <author>bbb</author>            
    </book>
</shipment>

最后我要return字符串:

"<shipment><book><title>aaa</title><author>bbb></author></book></shipment>"

正如我所说,我假设因为它是一个服务器端套件脚本,所以我会使用 N/xml 及其文档、节点、解析器等成员..

我的代码如下:

require(["N/xml"]);
var x= require("N/xml");
var xmlDocument = x.Parser.fromString({
                text: '<shipment/>'
            });
var newBookNode = xmlDocument.createElement("book"); 
    var newTitleNode = xmlDocument.createElement("title"); 
    var newTitleNodeValue = xmlDocument.createTextNode("aaa"); 
    var newAuthorNode = xmlDocument.createElement("author"); 
    var newAuthorNodeValue = xmlDocument.createTextNode("bbbb");

    newBookNode.appendChild(newTitleNode);
    newBookNode.appendChild(newAuthorNode);    
    newTitleNode.appendChild(newTitleNodeValue);
    newAuthorNode.appendChild(newAuthorNodeValue);

   xmlDocument.appendChild(newBookNode)
   var asString2 = x.Parser.toString({document:doc1})

但是执行 appendChild 的行给我一个错误“HierarchyRequestError:无法在 'Node' 上执行 'appendChild':文档上只允许一个元素。:null”

的确如此。您可以按如下方式使用 N/xml:


require(['N/xml'...], function(xml,...){

   var doc = xml.Parser.fromString({
      text:'<cXML payloadID="'+ payLoadId +'"></cXML>'
   });

   doc.documentElement.appendChild({newChild:doc.createElement({tagName:'Lab'})});

   var asString = xml.Parser.toString({document:doc});


});