javascript - 使用 javascript 更改现有的 xml prolog

标签 javascript xml

我看过有关 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/

相关文章:

javascript - 如何在 Framework7 中移动到另一个页面(导出变量)?

xml - 使用 "less than"字符的 exec 上的 Phing 语法错误

javascript - 删除动态生成按钮的 onclick 内容

javascript - 我如何在javascript中打印输入文本类型id的值

java - 如何在 Java 中解析带有 "Opening and ending tag mismatch"的 XML 文件

c# - 如何使用 XmlSerializer 将自定义值设置为 xml header 中的 xmlns

java - 基于 Java 服务器的 Web 应用程序中的 HTTP 状态代码

java - 在哪里可以找到 Netbeans RCP maven 项目中的主要 layer.xml 文件?

javascript - DatePicker:尝试设置日期时出错

javascript - 重绘元素会忽略 Android 浏览器中的 user-scalable=0。为什么?