我有一个XML有效负载
<myXML>
<ctx>
<recipient>
<CardNumber>1245</CardNumber>
<age>16</age>
<height>180</height>
</recipient>
</ctx>
</myXML>
var xmlDoc = DOMDocument.fromXMLString(message).getElementsByTagName("myXML")[0].toXMLString();
它基本上从CTX node 开始输出.
我想使用插入在特定位置添加一个新的 node /元素前面,但它对我不起作用,正确的方法是什么?
REF-https://experienceleague.adobe.com/developer/campaign-api/api/m-DOMNode-insertBefore.html
xmlDoc.insertBefore("<email>david@garcia.com</email>","<CardNumber>");
我必须创建元素吗?如何将其插入到特定位置?使用insertBefore
var email = xmlDoc.createElement("email");
email.textContent = "david@garcia.com";
email.appendChild(ctx)
以下是我如何做到这一点的
var myxml = <myXML>
<recipient>
<CardNumber>1245</CardNumber>
<age>16</age>
<height>180</height>
</recipient>
<recipient2>
<CardNumber1>1245</CardNumber1>
<age>16</age>
<height>180</height>
</recipient2>
</myXML>;
var xmlDoc = new DOMDocument.fromXMLString(myxml);
var root = xmlDoc.root;
var ctx = xmlDoc.createElement("ctx");
root.appendChild(ctx);
var emailElem = xmlDoc.createElement("email");
emailElem.textContent = "david@garcia.com";
var parent = xmlDoc.getElementsByTagName("CardNumber")[0].parentNode;
var email = xmlDoc.getElementsByTagName("CardNumber")[0];
parent.insertBefore(emailElem, email);
logInfo(xmlDoc.toXMLString())
输出为
<?xml version='1.0'?>
<myXML>
<recipient>
<email>david@garcia.com</email>
<CardNumber>1245</CardNumber>
<age>16</age>
<height>180</height>
</recipient>
<recipient2>
<CardNumber1>1245</CardNumber1>
<age>16</age>
<height>180</height>
</recipient2>
<ctx/>
</myXML>