以编程方式将 XML 声明添加到 XML 文档
Add XML declaration to XML document programmatically
我想将声明添加到 Javascript 中生成的 XML 文档中,但我没有找到足够的文档。
假设我想以编程方式(使用 Javascript)创建以下 XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<people>
<person first-name="eric" last-name="jung" />
</people>
这是我做的代码:
let doc = document.implementation.createDocument("", "", null);
let peopleElem = doc.createElement("people");
let personElem = doc.createElement("person");
personElem.setAttribute("first-name", "eric");
personElem.setAttribute("last-name", "jung");
peopleElem.appendChild(personElem);
doc.appendChild(peopleElem);
let docStr = new XMLSerializer().serializeToString(doc.documentElement);
console.log(docStr);
// produces:
// <people>
// <person first-name="eric" last-name="jung" />
// </people>
// and not:
// <?xml version="1.0" encoding="UTF-8"?>
// <people>
// <person first-name="eric" last-name="jung" />
// </people>
如何获取生成的XML中的<?xml version="1.0" encoding="UTF-8"?>
?
注意:我知道在这种情况下添加声明是没有用的,但最终我想使用特定的命名空间并将自定义 XML 实体添加到我的文档中。
感谢您的帮助。
这是一种方法。
参见list of compatible node types for XMLSerializer。
有ProcessingInstruction node that can be created with createProcessingInstruction方法。
最后,您需要序列化整个文档,而不仅仅是 documentElement
。
const doc = document.implementation.createDocument("", "", null);
const peopleElem = doc.createElement("people");
const pi = doc.createProcessingInstruction('xml', 'version="1.0" encoding="UTF-8"');
doc.insertBefore(pi, doc.firstChild);
const personElem = doc.createElement("person");
personElem.setAttribute("first-name", "eric");
personElem.setAttribute("last-name", "jung");
peopleElem.appendChild(personElem);
doc.appendChild(peopleElem);
const docStr = new XMLSerializer().serializeToString(doc);
console.log(docStr);
我想将声明添加到 Javascript 中生成的 XML 文档中,但我没有找到足够的文档。
假设我想以编程方式(使用 Javascript)创建以下 XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<people>
<person first-name="eric" last-name="jung" />
</people>
这是我做的代码:
let doc = document.implementation.createDocument("", "", null);
let peopleElem = doc.createElement("people");
let personElem = doc.createElement("person");
personElem.setAttribute("first-name", "eric");
personElem.setAttribute("last-name", "jung");
peopleElem.appendChild(personElem);
doc.appendChild(peopleElem);
let docStr = new XMLSerializer().serializeToString(doc.documentElement);
console.log(docStr);
// produces:
// <people>
// <person first-name="eric" last-name="jung" />
// </people>
// and not:
// <?xml version="1.0" encoding="UTF-8"?>
// <people>
// <person first-name="eric" last-name="jung" />
// </people>
如何获取生成的XML中的<?xml version="1.0" encoding="UTF-8"?>
?
注意:我知道在这种情况下添加声明是没有用的,但最终我想使用特定的命名空间并将自定义 XML 实体添加到我的文档中。
感谢您的帮助。
这是一种方法。
参见list of compatible node types for XMLSerializer。
有ProcessingInstruction node that can be created with createProcessingInstruction方法。
最后,您需要序列化整个文档,而不仅仅是 documentElement
。
const doc = document.implementation.createDocument("", "", null);
const peopleElem = doc.createElement("people");
const pi = doc.createProcessingInstruction('xml', 'version="1.0" encoding="UTF-8"');
doc.insertBefore(pi, doc.firstChild);
const personElem = doc.createElement("person");
personElem.setAttribute("first-name", "eric");
personElem.setAttribute("last-name", "jung");
peopleElem.appendChild(personElem);
doc.appendChild(peopleElem);
const docStr = new XMLSerializer().serializeToString(doc);
console.log(docStr);