JavaScript操作XML分解析与生成两部分:浏览器用DOMParser和XMLSerializer,Node.js需xml2js等第三方库;解析时注意MIME类型、错误检测及大小写敏感性,生成时需手动美化格式。
JavaScript 操作 XML 主要分两部分:解析已有 XML 数据(如从服务器获取的 XML 字符串或文
件),以及生成新的 XML 结构。现代浏览器原生支持 DOMParser 和 XMLSerializer,无需额外库即可完成基本操作;Node.js 环境则需借助第三方库(如 xml2js 或 xpath)。
这是最常用、兼容性良好的方式,适用于浏览器环境。把 XML 字符串转为可遍历的 DOM 文档对象。
DOMParser 实例,调用 parseFromString(),第二个参数必须是 "text/xml" 或 "application/xml"
documentElement 为 null,可通过检查 parseError(IE)或 document.querySelector("parsererror")(Chrome/Firefox)判断querySelector、getElementsByTagName、getAttribute 等)提取数据示例:
const xmlStr = ``; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlStr, "text/xml"); if (xmlDoc.querySelector("parsererror")) { console.error("XML 解析失败"); } else { const title = xmlDoc.querySelector("title").textContent; // "The Great Gatsby" const lang = xmlDoc.querySelector("title").getAttribute("lang"); // "en" } The Great Gatsby F. Scott Fitzgerald
当你已有一个 XML 文档对象(比如用 document.implementation.createDocument() 创建的),可以用它转回格式化字符串。
document.implementation.createDocument(null, "root", null)
createElement、setAttribute、appendChild 构建结构new XMLSerializer().serializeToString(doc) 转为字符串注意:生成的 XML 不自动缩进,如需美化需手动添加换行和空格,或使用外部工具。
通过 fetch 获取 XML 响应时,用 response.text() 得到字符串再解析,不要直接用 response.json()。
fetch("data.xml").then(r => r.text()).then(str => new DOMParser().parseFromString(str, "text/xml"))Content-Type: application/xml 或 text/xml,否则某些旧浏览器可能解析异常Node.js 没有内置 DOMParser,推荐使用成熟库:
xmldom):轻量组合,模拟浏览器 DOM API,适合习惯 DOM 操作的场景例如用 xml2js 解析:
const xml2js = require('xml2js');
const parser = new xml2js.Parser();
parser.parseString('Alice Bob ', (err, result) => {
if (!err) console.log(result.note.to[0]); // "Alice"
});
不复杂但容易忽略:XML 对大小写敏感、标签必须闭合、属性值必须加引号。解析前确保 XML 格式合法,否则静默失败很常见。