DOM 解析是将 XML 或 HTML 文档解析为 DOM 树的过程。在前端开发中,通常使用 JavaScript 来进行 DOM 解析,以便能够动态地操作文档的结构和内容。

以下是使用 JavaScript 进行 DOM 解析的基本步骤:

1. 创建 XMLHttpRequest 对象(如果需要从服务器获取 XML 数据):
var xhr = new XMLHttpRequest();
xhr.open("GET", "example.xml", true);
xhr.send();

2. 处理异步请求的响应:
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var xmlData = xhr.responseXML;
    // 在这里进行 DOM 解析
  }
};

3. DOM 解析:

使用 DOM 解析器(例如 DOMParser 或浏览器的内置解析器)将 XML 字符串解析为 DOM 树。

使用 DOMParser:
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xhr.responseText, "application/xml");

使用浏览器内置解析器:
var xmlDoc = xhr.responseXML;

4. 访问和操作 DOM 树:
// 示例:获取文档根元素
var rootElement = xmlDoc.documentElement;

// 示例:获取元素节点的子节点
var childNodes = rootElement.childNodes;

// 示例:获取元素节点的属性值
var categoryAttribute = rootElement.getAttribute("category");

// 示例:遍历子节点并输出文本内容
for (var i = 0; i < childNodes.length; i++) {
  var node = childNodes[i];
  if (node.nodeType == 1) {  // 判断是否为元素节点
    console.log(node.nodeName + ": " + node.textContent);
  }
}

在这个示例中,xmlDoc 变量现在包含了整个 XML 文档的 DOM 表示。可以使用 DOM 提供的方法和属性来访问和操作文档的各个部分。

完整的示例:
var xhr = new XMLHttpRequest();
xhr.open("GET", "example.xml", true);
xhr.send();

xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var parser = new DOMParser();
    var xmlDoc = parser.parseFromString(xhr.responseText, "application/xml");

    var rootElement = xmlDoc.documentElement;
    var childNodes = rootElement.childNodes;

    for (var i = 0; i < childNodes.length; i++) {
      var node = childNodes[i];
      if (node.nodeType == 1) {  // 元素节点
        console.log(node.nodeName + ": " + node.textContent);
      }
    }
  }
};

这个示例演示了如何使用 XMLHttpRequest 对象异步地获取 XML 数据,然后使用 DOMParser 进行解析,并最终访问和操作 DOM 树的内容。


转载请注明出处:http://www.zyzy.cn/article/detail/14559/XML DOM