在JavaScript中从DOMParser获取XML后导出指定标签的原始XML字符串
解决XML元素导出为带标签字符串的问题
你可以通过以下兼容IE和标准浏览器的方法,将获取到的XML元素导出为包含标签的原始XML字符串:
核心思路
不同环境下的XML DOM节点提供了不同的序列化API:
- IE环境(通过
Msxml2.DOMDocument.6.0创建的节点):直接使用元素的xml属性 - 标准浏览器(通过
DOMParser创建的节点):使用XMLSerializer的serializeToString方法
实现代码
封装一个兼容函数处理两种情况:
function getElementXmlString(xmlElement) { if (!xmlElement) return ''; // 处理IE的ActiveX XML对象 if (typeof xmlElement.xml !== 'undefined') { return xmlElement.xml; } // 处理标准浏览器的XML DOM对象 else if (typeof XMLSerializer !== 'undefined') { var serializer = new XMLSerializer(); return serializer.serializeToString(xmlElement); } // 兜底处理 else { throw new Error('无法序列化XML元素'); } }
使用示例
假设你通过privates._XmlGetElementsByTagName获取到了目标元素(或元素列表):
// 获取目标标签元素(若返回NodeList则遍历处理) var targetElements = privates._XmlGetElementsByTagName(data, "tagname"); if (targetElements.length > 0) { var firstElementXml = getElementXmlString(targetElements[0]); console.log(firstElementXml); // 输出包含标签的XML字符串 }
注意事项
- 如果
privates._XmlGetElementsByTagName返回的是NodeList(多个元素),需要循环遍历每个元素,分别调用序列化函数 - 确保传入的是有效的XML DOM元素节点,而非文档对象或其他类型节点
内容的提问来源于stack exchange,提问作者Stitchnoff
相关产品推荐
相关产品推荐

