为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯王 2021-10-21 11:05:47
我正在尝试使用 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 内容的简单方法吗?
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

原因是节点 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);  

rootElement.appendChild(CIAttributes_node); 

CIAttributes_node.appendChild(CIAttribute_node1);


doc.appendChild(rootElement);


查看完整回答
反对 回复 2021-10-21
  • 1 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信