繁体   English   中英

getElementsByTagName 未返回所有子节点

[英]getElementsByTagName is not returning all child nodes

我的 XML 字符串是

str = "<ROOT><CATEGORY_AREA_LIST><CATEGORY_AREA NAME='General'><CATEGORY_TYPE NAME='MOC'><PROPOSED_LEVEL NAME='3'></PROPOSED_LEVEL></CATEGORY_TYPE><CATEGORY_TYPE NAME='General'><PROPOSED_LEVEL NAME='3'></PROPOSED_LEVEL></CATEGORY_TYPE></CATEGORY_AREA><CATEGORY_AREA NAME='BOO'><CATEGORY_TYPE NAME='Open'><PROPOSED_LEVEL NAME='1'></PROPOSED_LEVEL></CATEGORY_TYPE><CATEGORY_TYPE NAME='NOC'><PROPOSED_LEVEL NAME='5'></PROPOSED_LEVEL></CATEGORY_TYPE></CATEGORY_AREA></CATEGORY_AREA_LIST></ROOT>"

在 javascript 函数中,我试图获取所有 CATEGORY_AREA

var dp = new DOMParser();    
  var xmlDoc = dp.parseFromString(str , "text/xml");
    var list = xmlDoc.getElementsByTagName("CATEGORY_AREA_LIST");
    var categoryArea = list[0].childNodes;

但是 categoryArea 只有一个条目。

我做错了什么吗?

我的意图是访问所有category_area,然后访问所有category_type 和proposed_level。

请帮忙

如果您将console.log(xmlDoc)添加到您的代码中,您可以查看由 DOM 解析器生成的 XML 文档。

浏览器开发者工具中的 DOM 截图

它有一堆错误,所以CATEGORY_AREA_LIST元素没有子节点。

您可以使用xmllint 之类的工具(它随 libxml 一起提供,因此可以轻松安装在大多数 UNIX 系统(包括Windows 10 )上)来突出显示 XML 中的特定错误。


重新编辑:

现在您已经修复了您的 XML,我无法重现该问题:

 str = "<ROOT><CATEGORY_AREA_LIST><CATEGORY_AREA NAME='General'><CATEGORY_TYPE NAME='MOC'><PROPOSED_LEVEL NAME='3'></PROPOSED_LEVEL></CATEGORY_TYPE><CATEGORY_TYPE NAME='General'><PROPOSED_LEVEL NAME='3'></PROPOSED_LEVEL></CATEGORY_TYPE></CATEGORY_AREA><CATEGORY_AREA NAME='BOO'><CATEGORY_TYPE NAME='Open'><PROPOSED_LEVEL NAME='1'></PROPOSED_LEVEL></CATEGORY_TYPE><CATEGORY_TYPE NAME='NOC'><PROPOSED_LEVEL NAME='5'></PROPOSED_LEVEL></CATEGORY_TYPE></CATEGORY_AREA></CATEGORY_AREA_LIST></ROOT>" var dp = new DOMParser(); var xmlDoc = dp.parseFromString(str , "text/xml"); var list = xmlDoc.getElementsByTagName("CATEGORY_AREA_LIST"); var categoryArea = list[0].childNodes; console.log(categoryArea.length)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM