我的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和proposal_level。
请帮助
答案 0 :(得分:1)
如果将console.log(xmlDoc)
添加到代码中,则可以查看DOM分析器生成的XML文档。
它有很多错误,因此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)