xml 使用 javascript 缺少属性结束标记

我正在尝试使用 JavaScript 准备一个 XML,它应该如下所示。


<Service>

<NewInstance ref="External_UCSD_Serverinfo">

    <Std>DiscoveredElement</Std>

    <Virtual/>

    <Key>Key001</Key>

    <Attributes>

        <Attribute name="hpom_citype" value="External_UCSD_Serverinfo"/>

    </Attributes>

</NewInstance>

</Service>

我准备了以下代码。


var doc = builder.newDocument();

var rootElement = doc.createElement("Service");


var NewInstance_node = doc.createElement("NewInstance");

var attr = doc.createAttribute("ref");

attr.setValue("External_UCSD_Serverinfo");

NewInstance_node.setAttributeNode(attr);

rootElement.appendChild(NewInstance_node);



var Std_node = doc.createElement("Std");

Std_node.appendChild(doc.createTextNode("DiscoveredElement"));

rootElement.appendChild(Std_node);


    var Std_Virtual = doc.createElement("Virtual");

rootElement.appendChild(Std_Virtual);



var Key_node = doc.createElement("Key");

Key_node.appendChild(doc.createTextNode("Key001"));

rootElement.appendChild(Key_node);



var CIAttributes_node = doc.createElement("Attributes");

var CIAttribute_node1 = doc.createElement("Attribute");

var attr_name1 = doc.createAttribute("name");

attr_name1.setValue("hpom_citype");

var attr_val1 = doc.createAttribute("value");

attr_val1.setValue("External_UCSD_Serverinfo");

CIAttribute_node1.setAttributeNode(attr_name1);

CIAttribute_node1.setAttributeNode(attr_val1);  

rootElement.appendChild(CIAttributes_node); 

CIAttributes_node.appendChild(CIAttribute_node1);



doc.appendChild(rootElement);


var tf = javax.xml.transform.TransformerFactory.newInstance();

var t = tf.newTransformer();

t.setOutputProperty("omit-xml-declaration", "yes");

var sw = new StringWriter();

t.transform(new javax.xml.transform.dom.DOMSource(doc), new javax.xml.transform.stream.StreamResult(sw));


所以我得到了我正在寻找的东西,除了“NewInstance”的结束标签。有人能告诉我我错过了什么吗?还有使用 JavaScript 编写 XML 内容的简单方法吗?


慕斯王
浏览 189回答 1
1回答

阿波罗的战车

原因是节点 Std、Virtual、Key 等附加到 rootElement 而不是 NewInstance_node详细:var doc = document.implementation.createDocument(null, null);var rootElement = doc.createElement("Service");var NewInstance_node = doc.createElement("NewInstance");var attr = doc.createAttribute("ref");attr.value="External_UCSD_Serverinfo";NewInstance_node.setAttributeNode(attr);rootElement.appendChild(NewInstance_node);var Std_node = doc.createElement("Std");Std_node.appendChild(doc.createTextNode("DiscoveredElement"));NewInstance_node.appendChild(Std_node);var Std_Virtual = doc.createElement("Virtual");NewInstance_node.appendChild(Std_Virtual);var Key_node = doc.createElement("Key");Key_node.appendChild(doc.createTextNode("Key001"));NewInstance_node.appendChild(Key_node);var CIAttributes_node = doc.createElement("Attributes");var CIAttribute_node1 = doc.createElement("Attribute");var attr_name1 = doc.createAttribute("name");attr_name1.value="hpom_citype";var attr_val1 = doc.createAttribute("value");attr_val1.value="External_UCSD_Serverinfo";CIAttribute_node1.setAttributeNode(attr_name1);CIAttribute_node1.setAttributeNode(attr_val1);&nbsp;&nbsp;rootElement.appendChild(CIAttributes_node);&nbsp;CIAttributes_node.appendChild(CIAttribute_node1);doc.appendChild(rootElement);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript