JavaScript中创建XML DOM对象主要有两种方式:一是用document.implementation.createDocument()创建空XML文档并手动构建节点;二是用DOMParser解析XML字符串。序列化用XMLSerializer,注意兼容性与转义问题。

JavaScript 中创建 XML DOM 对象,核心是使用 DOMParser 解析字符串,或用 document.implementation.createDocument() 创建空 XML 文档。动态生成 XML 主要靠手动构建节点并追加,而非直接拼接字符串(避免格式/转义问题)。
使用 createDocument 创建空 XML DOM
适用于从零开始构建结构清晰的 XML:
document.implementation.createDocument(namespaceURI, rootElementName, doctype)- 第一个参数可为
null或""(无命名空间),第二个是根元素名,第三个通常传null - 返回一个
XMLDocument对象,后续可用createElement、createTextNode等方法添加内容
示例:
const xmlDoc = document.implementation.createDocument("", "bookstore", null);
const book = xmlDoc.createElement("book");
const title = xmlDoc.createElement("title");
title.appendChild(xmlDoc.createTextNode("JavaScript Guide"));
book.appendChild(title);
xmlDoc.documentElement.appendChild(book);
用 DOMParser 解析 XML 字符串
适合已有 XML 结构字符串,需转为可操作的 DOM 对象:
立即学习“Java免费学习笔记(深入)”;
new DOMParser().parseFromString(xmlString, "application/xml")- 注意 MIME 类型必须是
"application/xml"(不是"text/xml",部分浏览器会报错) - 解析失败时返回的文档中可能含
,建议检查xmlDoc.querySelector("parsererror")
示例:
const xmlStr = ``; const xmlDoc = new DOMParser().parseFromString(xmlStr, "application/xml"); if (xmlDoc.querySelector("parsererror")) { console.error("XML 解析失败"); } Alice Bob
序列化 XML DOM 回字符串
生成后若需输出或发送,用 XMLSerializer 转回字符串:
new XMLSerializer().serializeToString(xmlDoc)- 会保留 XML 声明(如
),前提是原始文档有xmlDoc.xmlVersion等设置(但多数场景默认即可) - 注意:IE 不支持
XMLSerializer,旧项目需兼容时可用xmlDoc.xml(仅 IE)或降级处理
动态添加带属性和文本的节点
构建真实业务 XML 常需属性与嵌套文本混合:
- 用
element.setAttribute("name", "value")添加属性 - 用
element.textContent = "xxx"设置文本内容(比createTextNode更简洁) - 避免直接拼接 HTML/XML 字符串,防止特殊字符(如
、&)引发解析错误
示例(带属性):
const person = xmlDoc.createElement("person");
person.setAttribute("id", "101");
person.setAttribute("type", "student");
person.textContent = "张三";
xmlDoc.documentElement.appendChild(person);










