javascript - 是否可以使用XMLDOM获取所有处理指令元素?

标签 javascript node.js xml xmldom processing-instruction

我有一个 XML 文件,其中包含 <?myinst contents ?> 形式的处理指令。我需要通过单个 DOM 查询将它们全部放入一个集合中,如果可能的话,使用 XMLDOM在 Node.js 上。如果不迭代所有树,这可能吗?

最佳答案

您必须使用 xml-dom 迭代树。您指出的实现实际上甚至对 getElementByID 或其他选择器方法也使用完整迭代。更好的实现将使用 tagName 和 id 缓存... 如果您的目标是完全层兼容性(浏览器和 NodeJS 代码通用性),那么除了基于递归的过滤器之外,您没有其他选择,如下所示。

function _visitNode(node,callback){
    if(callback(node)){
        return true;
    }
    if(node = node.firstChild){
        do{
            if(_visitNode(node,callback)){return true}
        }while(node=node.nextSibling)
    }
}

function getPIs(rootNode){
  var ls = [];
  _visitNode(rootNode, function(node){
     if(node !== rootNode && node.nodeType == 7) {
       ls.push(node);
       return true;
     }
   });
   return ls;
}

我们使用 libxmljs 和 xslt 来选择内容,但仅对于 PI 来说,这可能有点过大了…… HTH

关于javascript - 是否可以使用XMLDOM获取所有处理指令元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13032046/

相关文章:

ruby-on-rails - 如何运行 GenieACS?

c# - 使用信封重载 xml 中的命名空间

javascript - jQuery 完全用另一个 DOM 替换元素的 DOM - 更快的方法?

node.js - 在 Express 调用中定义查询

javascript - 交错图像和复选框的问题

node.js - Multer 和 CSRF 以及 <form action ="?_method=PUT">

java - 在 Wiremock 中评估 XPath 表达式

xml - 改进功能以使用标签从字符串填充对象

javascript 不移动元素

javascript - 如何删除对象键的空格? [for...in] [keys.forEach] [reduce]