📅  最后修改于: 2023-12-03 15:28:06.833000             🧑  作者: Mango
XML DOM (XML Document Object Model) 是一种表示和操作 XML 文档的标准模型。它允许我们以树形结构来遍历文档中的各个元素,并对其进行增、删、改、查等操作。在使用 XML 进行数据交换或存储时,XML DOM 的使用非常普遍,因此掌握 XML DOM 是非常必要的。
XML DOM 将整个 XML 文档看作一个文档节点(Document),文档节点是根节点,表示整个 XML 文档。
XML 文档中的每个元素都是一个元素节点(Element)。元素节点可以包含文本、属性、子元素等。
XMLElement 对象的属性(Attribute)可以通过元素节点来访问。例如,xmlDoc.getElementsByTagName("book")[0].getAttribute("category"),返回"WEB"。
XML 文档中的文本也是一个节点(Text)。XML 文档中的空格和换行符也被视为文本节点。
在 JavaScript 中,我们可以使用 XMLHttpRequest 对象来加载XML文档。一旦加载完毕,我们可以使用DOM API来操作文档。
let xmlDoc;
if (window.XMLHttpRequest) {
// IE7+,Firefox,Chrome,Opera,Safari 浏览器执行代码
xmlhttp = new XMLHttpRequest();
} else {
// IE6,IE5 浏览器执行代码
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
xmlDoc = this.responseXML;
console.log(xmlDoc);
}
};
xmlhttp.open("GET", "books.xml", true);
xmlhttp.send();
上述代码中,我们使用 XMLHttpRequest 对象来加载名为“books.xml”的 XML 文档。通过判断 XMLHttpRequest 对象在不同浏览器的调用方式,来保证整个脚本的兼容性。
我们可以通过元素节点(Element),遍历和访问 XML 文档中的各个节点。
let xmlDoc = ...; // 先加载 XML 文档
let books = xmlDoc.getElementsByTagName("book");
for (let i = 0; i < books.length; i++) {
let title = books[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
let author = books[i].getElementsByTagName("author")[0].childNodes[0].nodeValue;
console.log(title + " - " + author);
}
上述代码中,我们使用 xmlDoc.getElementsByTagName("book")来获取XML文档中所有
我们可以通过修改对象的属性,来修改 XML 文档,然后再通过 save 方法将修改保存至 XML 文件。
xmlDoc.getElementsByTagName("author")[0].childNodes[0].nodeValue = "新的作者";
xmlDoc.save("filename.xml");
上述代码中,我们修改了 XML 文档中第一个
XML DOM 是一种十分重要的技术,它充分利用 JavaScript 等编程语言的特性,对 XML 文档进行操作和处理。了解 XML DOM 的基本概念和基本操作,可以大大提高开发的效率,同时也可以更好地理解和应用 XML 相关的技术。