在javascript中解析xml字符串最直接的方式是使用domparser接口,1. 首先创建domparser实例并调用parsefromstring方法,传入xml字符串和内容类型如"application/xml";2. 解析后必须检查返回文档中是否存在parsererror节点以判断xml格式是否正确,若存在则说明xml结构有误;3. 解析成功后可使用getelementsbytagname、queryselector等dom方法提取数据,推荐结合css选择器进行高效查询;4. 提取文本用textcontent,获取属性用getattribute;5. 相比json,xml更适合文档型、结构复杂或需严格验证的场景,而json因轻量和原生支持更适用于现代web api数据交换,选择应基于具体需求。

在JavaScript中解析XML字符串,最直接且现代的方式是使用浏览器内置的
DOMParser
要将XML字符串解析成DOM对象,核心就是实例化
DOMParser
parseFromString
"application/xml"
"text/xml"
这是一个基本的例子,展示了如何操作:
const xmlString = `
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
`;
try {
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "application/xml");
// 检查解析错误
const errorNode = xmlDoc.querySelector('parsererror');
if (errorNode) {
console.error('XML解析错误:', errorNode.textContent);
// 通常,这里你可以根据实际需求进行错误处理,比如提示用户或记录日志
throw new Error('Malformed XML string');
}
// 成功解析后,就可以像操作HTML DOM一样操作XML了
const books = xmlDoc.getElementsByTagName('book');
console.log(`找到了 ${books.length} 本书。`);
for (let i = 0; i < books.length; i++) {
const title = books[i].getElementsByTagName('title')[0].textContent;
const author = books[i].getElementsByTagName('author')[0].textContent;
console.log(`书名: ${title}, 作者: ${author}`);
}
} catch (e) {
console.error("处理XML时发生异常:", e.message);
}在我看来,处理XML解析,尤其是从后端或第三方接口获取的XML,最让人头疼的往往不是解析本身,而是那些“看起来像XML但又不是”的字符串,或者格式上存在细微偏差的情况。我遇到过不少次,一个看似简单的XML,因为缺少一个闭合标签或者属性值没有正确引用,导致整个解析失败。
最常见的错误就是XML字符串本身格式不正确,也就是所谓的“格式错误”(Malformed XML)。当
DOMParser
parsererror
调试策略:
本文档主要讲述的是Android数据格式解析对象JSON用法;JSON可以将Java对象转成json格式的字符串,可以将json字符串转换成Java。比XML更轻量级,Json使用起来比较轻便和简单。JSON数据格式,在Android中被广泛运用于客户端和服务器通信,在网络数据传输与解析时非常方便。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
0
parsererror
xmlDoc.querySelector('parsererror')textContent
parsererror
XML Validator
DOMParser
一旦XML字符串被成功解析成DOM对象,提取数据就变得和操作HTML DOM非常相似了。我的经验是,选择哪种方法取决于你的具体需求和XML的结构复杂性。
getElementsByTagName(tagName)
xmlDoc.getElementsByTagName('book')<book>
querySelector(selector)
querySelectorAll(selector)
xmlDoc.querySelector('book[category="cooking"] > title')xmlDoc.querySelectorAll('book price')getAttribute(name)
bookElement.getAttribute('category')textContent
innerHTML
textContent
innerHTML
// 接着上面的xmlDoc
const firstBookTitle = xmlDoc.querySelector('book title[lang="en"]');
if (firstBookTitle) {
console.log("第一本书的英文标题:", firstBookTitle.textContent);
}
const allPrices = xmlDoc.querySelectorAll('book price');
allPrices.forEach((priceNode, index) => {
console.log(`第 ${index + 1} 本书的价格: ${priceNode.textContent}`);
});
const cookingBookCategory = xmlDoc.querySelector('book[category="cooking"]');
if (cookingBookCategory) {
console.log("烹饪书的分类:", cookingBookCategory.getAttribute('category'));
}这是一个老生常谈的话题,但每次我需要决定数据格式时,都会重新思考一下。XML和JSON都是广泛用于数据交换的格式,它们各有优劣,选择哪一个往往取决于具体的应用场景、数据特性以及团队的偏好。
XML的优势:
XML的劣势:
DOMParser
JSON的优势:
JSON.parse()
JSON.stringify()
JSON的劣势:
我的选择偏好: 在现代Web开发中,尤其是构建RESTful API时,我几乎总是首选JSON。它的简洁性和与JavaScript的无缝集成让开发效率大大提升。然而,当涉及到与老旧系统集成、处理特定行业标准(如一些金融或医疗领域)、或者需要严格的数据验证和复杂的文档结构时,XML依然是不可替代的选择。比如,我曾处理过一些第三方支付接口,它们就强制要求使用XML进行数据交换,这时候就得老老实实地用XML。所以,选择哪种格式,最终还是得看你的项目背景和具体需求。没有绝对的好坏,只有是否适合。
以上就是js怎么解析xml字符串的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号