gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:55:41 25 4
gpt4 key购买 nike

我正在尝试使用 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));

但结果我得到低于输出。

   <Service>
<NewInstance ref='External_UCSD_Serverinfo'/>
<Std>DiscoveredElement</Std>
<Virtual/>
<Key>Key001</Key>
<Attributes>
<Attribute name='hpom_citype' value='External_UCSD_Serverinfo'/>
</Attributes>
</Service>

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

最佳答案

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

关于javascript - 使用 javascript 的 xml 属性缺少结束标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57989984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com