JavaScript 解析 XML 对象及 SVG 节点读取详解

作者:木棉时间:2026-10-23 20:53:28浏览:564

本文详细讲解如何在 JavaScript 中解析 XML 字符串并提取节点数据。针对 IE 与非 IE 浏览器,分别演示了使用 ActiveXObject 和 DOMParser 加载 XML 的方法。重点介绍了如何获取 SVG 对象的文本内容、属性值以及遍历子节点,适用于需要处理 SVG 或通用 XML 结构的 Web 开发场景。

XML 数据结构示例

首先需要准备待读取的 XML 数据。


示例代码如下:

<svg id="svgID" key="1">
<desc id= "descID">
Text1
</desc>
<defs>
Text2
</defs>
<g>
text3
</g>
</svg>

JavaScript 解析该 XML 的具体实现逻辑如下:

JavaScript 解析实现

对应的 JavaScript 处理代码如下:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript">
<!-- 
function initXML(){
if (window.ActiveXObject){
var doc=new ActiveXObject("Microsoft.XMLDOM");
doc.async="false";
doc.load("test.xml");
}else{
var parser=new DOMParser();
var doc=parser.parseFromString("test.xml","text/xml");
} 
var xmlDoc=doc.documentElement;//获取svg对象
xmlDoc.text;//输出svg对象中所有的text,output:text1 Text2 Text3
xmlDoc.getAttribute("id");//输出svg对象的id,output:svgID
xmlDocxmlDocLen=xmlDoc.childNodes.length;//输出svg对象的子节点个数,output:3
var xmlDocxmlDocChilds=xmlDoc.childNodes;//获取svg的所有子节点
var xmlDOcChildNode0=xmlDocChilds[0];//获取svg的第一个子节点
var xmlDocChildNode0TagName=xmlDOcChildNode0.nodeName;//获取svg的第一个子节点的tagname,output:desc
var xmlDocChildNode0ID=xmlDocChildNode0.getAttribute("id");//获取svg的第一个子节点的id属性,output:descID
var xmlDocChildNode0InnerText=xmlDocChildNode0.Text
xmlDocChildNode0InnerText=xmlDocChildNode0.firstChild.nodeValue;;//获取svg的第一个子节点的text,output:Text1
} 
// --></script>
<title></title>
</head>
<body>
<input onclick="initXML();" value="testXML" type="button" />
</body>
</html>
作者最新文章