2011-06-06 132 views
0

以下代码适用于保存的XML文件,但不会解析HTML。Xpath简单问题

<html> 
<body> 
<script type="text/javascript"> 
function loadXMLDoc(dname) 
{ 
if (window.XMLHttpRequest) 
    { 
    xhttp=new XMLHttpRequest(); 
    } 
else 
    { 
    xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xhttp.open("GET",dname,false); 
xhttp.send(""); 
return xhttp.responseXML; 
} 

xml=loadXMLDoc("test.html"); 
path="div[@id='aa']/span[@class]//a[@href]" 
// code for IE 
if (window.ActiveXObject) 
{ 
var nodes=xml.selectNodes(path); 

for (i=0;i<nodes.length;i++) 
    { 
    document.write(nodes[i].childNodes[0].nodeValue); 
    document.write("<br />"); 
    } 
} 
// code for Mozilla, Firefox, Opera, etc. 
else if (document.implementation && document.implementation.createDocument) 
{ 
var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); 
var result=nodes.iterateNext(); 

while (result) 
    { 
    document.write(result.childNodes[0].nodeValue); 
    document.write("<br />"); 
    result=nodes.iterateNext(); 
    } 
} 
</script> 

</body> 
</html> 

的test.html文件看起来像这样

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" /> 
    </head> 
    <body> 
    <div id="aa"> 
     <span class="bb"> 
      <a href="http://google.com">link 1</a> 
     </span> 
    </div> 
     </body> 
     </html> 
+0

这甚至不是有效的HTML。 – Quentin 2011-06-06 11:37:08

+0

现在它是有效的HTML,但再次解析不起作用 – George 2011-06-06 11:45:06

+0

您提供的代码示例不是有效的HTML(或XHTML)。 – Quentin 2011-06-06 11:51:58

回答

1

我不知道“Microsoft.XMLHTTP”什么,但我怀疑你需要,如果你想使用一个与XHTML来代替你的HTML XML解析器。普通的HTML不遵守XML的所有规则(例如,您可以使用未封闭的标签,例如<br>)。

+0

已添加<!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Strict // EN” “http:// www .w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“> 但它不会解析 – George 2011-06-06 11:40:37