我正在使用Node.js项目。我正在使用DOM Parser。
var parser = new DOMParser();
var xmldoc = parser.parseFromString(xml,"text/xml");
这里的XML是字符串。
我想读取所有第一级子节点(不在子级节点中)。
Node (1)
Node (2)
Node (3)
Node (4)
我被阅读节点困住了。所有节点都是嵌套的同名。
我正在使用querySelectorAll(“Node”)。它获取所有嵌套节点。
如何阅读所有第一级子示例:Node2,Node4?
有人帮我吗?
提前致谢。
更新
Node (1)
other node
ExampleNode
ExampleNode
Node (2)
Node (3)
Node (4)
ExampleNode
答案 0 :(得分:1)
扩展我的评论。
DOMParser可以将存储在字符串中的XML或HTML源解析为DOM。
一旦我们有了DOM,我们就可以使用所有document方法,包括标准的DOM树遍历。
如何在xml中获取所有第一级嵌套节点?
通过DOM遍历
<div id="parentDiv" style="position: absolute; top: 100px;">
<div id="containerDiv" style="overflow: auto; position: relative; height: 150px;">
<div>List 1</div> <!--Child div elements-->
<div>List 2</div>
<div>List 3</div>
<div>List 4</div>
</div>
</div
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';
});
据我所知,使用当前的CSS选择器API无法做到这一点,而且没有额外的标记。
如果必须使用选择器,那么您可以使用像jQuery那样扩展CSS选择器API的第三方库。
<pre id="out"></pre>
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');
});
答案 1 :(得分:0)
您可以使用xpath获取根node
元素的 direct child 的node
元素,例如:
var xmlString = '<node>1<node>2<node>3</node></node><node>4</node></node>';
var doc = new DOMParser().parseFromString(xmlString, 'text/xml');
var result = doc.evaluate('/node/node', doc, null, XPathResult.ANY_TYPE , null);
var message = "Direct child nodes in this XML document are: ";//}
for(var node = result.iterateNext(); node; node = result.iterateNext())
{
message += node.textContent + ", ";
}
$('#output').text(message);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"></div>
&#13;
第一个/node
返回根node
元素,第二个/node
返回根直接子。
供参考: