如何在xml节点中查找属性的具体位置

时间:2018-02-28 16:40:37

标签: javascript xml

我一直在尝试在特定的xml节点中找到属性(行,列)的位置。我知道我可以通过使用XPATH或sax解析器来访问节点和属性值,但还没有找到一种方法来定位属性的位置。 感谢您的帮助

3 个答案:

答案 0 :(得分:1)

在浏览器中找到的DOM解析器通常不会提供任何位置信息(AFAIK)。如果您使用的是第三方SAX解析器,那么您可能会更幸运;但这一切都取决于你使用的解析器。但是,我会惊讶地发现个别属性级别的位置信息:它提供的代价很高,元素级信息更常见。

答案 1 :(得分:1)

我设法使用XMLDOM执行此操作。

DOMParser = require('xmldom').DOMParser;


var parser = new DOMParser({locator:{}});
var content = parser.parseFromString(xmlContent, "text/xml");
var rootNode = this.parseXml(content.documentElement);
var attrs = rootNode .attributes || [];
for (var i = 0; i < attrs.length; i++) {
     var attr = attrs[i];
     var nColumn = attr.columnNumber;
     var nLine = attr.lineNumber;
}

答案 2 :(得分:0)

例如,示例XML文件是:

<parents name='Parents'>
  <Parent id='1' name='Parent_1'>
    <Children name='Children'>
      <child name='Child_2' id='2'>child2_Parent_1</child>
      <child name='Child_4' id='4'>child4_Parent_1</child>
      <child name='Child_1' id='3'>child1_Parent_1</child>
      <child name='Child_3' id='1'>child3_Parent_1</child>
    </Children>
  </Parent>
  <Parent id='2' name='Parent_2'>
    <Children name='Children'>
      <child name='Child_1' id='8'>child1_parent2</child>
      <child name='Child_2' id='7'>child2_parent2</child>
      <child name='Child_4' id='6'>child4_parent2</child>
      <child name='Child_3' id='5'>child3_parent2</child>
    </Children>
  </Parent>
</parents>

使用XPath,您可以:

//Parent[@id='1']/Children/child/@name 

输出:

Child_2
Child_4
Child_1
Child_3