我正在使用 Node.js 项目。我正在使用 DOM 解析器。
var parser = new DOMParser();
var xmldoc = parser.parseFromString(xml,"text/xml");
这里 XML 是字符串。
我想读取所有第一级子 Node (不在子级 Node 中)。
Node (1)
Node (2)
Node (3)
Node (4)
我被阅读 Node 困住了。所有 Node 同名且嵌套。
我正在使用querySelectorAll(“Node”)。它获取所有嵌套 Node 。
如何读取所有第一级子示例:Node2、Node4?
有人可以帮助我吗?
提前致谢。
更新:
Node (1)
other node
ExampleNode
ExampleNode
Node (2)
Node (3)
Node (4)
ExampleNode
最佳答案
扩展我的评论。
DOMParser可以将存储在字符串中的 XML 或 HTML 源解析为 DOM。
一旦我们有了 DOM,那么我们就拥有了所有 document我们可以使用的方法,包括标准的 DOM 树遍历。
How to get all the first level nested node in xml?
通过DOM遍历
var xmlString = '<node>(1)<node>(2)<node>(3)</node></node><node>(4)</node></node>',
parser = new DOMParser(),
xmldoc = parser.parseFromString(xmlString, 'text/xml'),
firstLevel = xmldoc.children[0].children,
pre = document.getElementById('out');
pre.textContent = 'Number of first level nodes: ' + firstLevel.length + '\n';
[].forEach.call(firstLevel, function (node) {
pre.textContent += 'node text: ' + node.firstChild.textContent + '\n';
});
<pre id="out"></pre>
据我所知,当前的 CSS 选择器 API 无法做到这一点,而且没有额外的标记也是如此。
如果选择器是必须的,那么您可以使用第三方库(例如 jQuery)来扩展 CSS 选择器 API。
var xmlString = '<node>(1)<node>(2)<node>(3)</node></node><node>(4)</node></node>',
xmldoc = $.parseXML(xmlString),
$firstLevel = $('node:first > node', xmldoc),
$pre = $('#out');
$pre.append('Number of first level nodes: ' + $firstLevel.length + '\n');
$.each($firstLevel, function (index, node) {
$pre.append('node text: ' + $(node).contents().eq(0).text() + '\n');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="out"></pre>
关于javascript - 如何获取xml中所有的一级嵌套 Node ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30752712/