我看过有关 Java 和 C# 的问题/答案,但没有看过有关 JavaScript 的问题/答案。
如果我有一个带有标准序言的 XML 文档/字符串,将如何访问它?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
由于序言本身并没有元素名称,据我所知,它不能成为 xml.getElementByTagName()
的目标。 ,因此无法删除序言的任何属性。
例如,如果我有一些如下所示的 XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<element>text</element>
</root>
我将能够定位 <element>
并添加属性、删除文本等。但是,假设我想更改或删除独立声明。我无法用常规方法定位它。
那么,如何使用 JavaScript 以编程方式更改序言?
最佳答案
这在 Firefox 开发工具控制台中有效:
// build an xml
var xmlDoc = document.implementation.createDocument(null, "books");
// print XML string
(new XMLSerializer()).serializeToString(xmlDoc);
只是根节点
"<books/>"
现在根据您的要求创建一个文档
var parser = new DOMParser();
prolog = '<?xml version="1.0" encoding="utf-8" standalone="no"?>';
// Add existing XML starting at root element
newXmlStr = prolog + (new XMLSerializer()).serializeToString(xmlDoc);
var xml = parser.parseFromString(newXmlStr, "application/xml");
// print raw xml
console.log((new XMLSerializer()).serializeToString(xml));
新的 XML 字符串:
"<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<books/>"
其他情况:
prolog = '<?xml version="1.0" encoding="utf-8"?>';
prolog = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
如果您的 xml 已经包含序言,请使用 xml.documentElement
从根元素开始获取它
prolog = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
var parser = new DOMParser();
XmlStr = prolog + "<bookz/>";
var xmlz = parser.parseFromString(XmlStr, "application/xml");
console.log((new XMLSerializer()).serializeToString(xmlz));
带有 standalone="yes"
的 XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bookz/>
新的 XML:
// set standalone="no"
prolog = '<?xml version="1.0" encoding="utf-8" standalone="no"?>';
// serialize existing xml at root node
newXmlStr = prolog + (new XMLSerializer()).serializeToString(xmlz.documentElement);
// Rebuild with new prolog
var xml = parser.parseFromString(newXmlStr, "application/xml");
带有 standalone="no"
的 XML
console.log((new XMLSerializer()).serializeToString(xml));
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<bookz/>
关于javascript - 使用 javascript 更改现有的 xml prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109538/