在JavaScript中解析XML,试图通过类名获取元素
问题描述:
我想使用JavaScript解析大型XML文件。在线看,似乎最简单的方法就是使用浏览器的DOM解析器。这工作,我可以通过ID获取元素。我还可以获得这些元素的“类”属性,并返回我所期望的。但是,我似乎没有能够按班获得元素。在JavaScript中解析XML,试图通过类名获取元素
xmlString = '<?xml version="1.0"?>';
xmlString = xmlString + '<example class="test" id="example">content</example>'
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString,"text/xml");
xmlDoc.getElementById("example");
// returns the example element (good)
xmlDoc.getElementById("example").getAttribute("class");
// returns "test" (good)
xmlDoc.getElementsByClassName("test");
// returns [] (bad)
任何想法:
下在最新的Chrome被审判?
答
这应该得到给定类的所有元素,假定标记名称是一致的。
var elements = xmlDoc.getElementsByTagName('Example');
var classArray = [];
for(var i=0;i<elements.length;i++){
if(elements[i].className=="test"){
classArray.push(elements[i])
}}
+0
这几乎可行,除了.className至少在Chrome中不存在,所以你必须使用getAttribute('class')。不过,我不知道它是否比jQuery解析器快 –
答
将解析器类型更新为HTML而不是XML应该可行。
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString,"text/html")
哪个浏览器?也许你的浏览器不支持这个功能? – gdoron
可能重复到http://stackoverflow.com/questions/9396354 – Bergi
这是行不通的,因为你正在处理一个XML文档,而HTML特定的属性(如'class')不适用。但是,仍然可以通过标记名称获取元素(即'xmlDoc.getElementsByTagName('example');') - 您是否可以使用它来获得您的优势? –