我想从稍后将用于计算其所有后代的文件中获取html节点。我在从DOM中检索元素时遇到问题。这是我迄今采取的步骤。无法使用document.getElementById获取元素,返回null
首先这里是我的html代码:
<html>
<head>
<title></title>
</head>
<body>
<div id="container">
<a></a>
<div id="header">
<div id="firstchild">
<div>
<img></img>
</div>
<a></a>
<ul>
<li>
<a>Inbox</a>
</li>
<li>
<a>Logout</a>
</li>
</ul>
<form></form>
</div>
<div id="nextsibling"></div>
</div>
</div>
</body>
</html>
其次,我建立了这个功能,将返回并解析文件插入到文档中。
public static Document buildDocument(String file){
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document document = docBuilder.parse(file);
return document;
} catch (ParserConfigurationException | SAXException | IOException ex) {
System.out.println("the exception is: " + ex.toString());
}
return null;
}
下一页在我的主要方法我试过一个Node对象设置为一样的getElementById的方式elemet文件:
public Document doc = buildDocument("myHTMLFile");
org.w3c.dom.Node node = doc.getElementById("header");//the id of an html element
纠正我,如果我错了,但是这将导致的retreival节点。但是它返回一个空值。我不明白为什么它没有返回正确的值。注意:在调试代码时,文档确实包含了所有正确的数据,据我所知。
你可以给'catch'增加一个更通用的异常吗? (我不是一个Java的人,顺便说一句) –
另外,你传递“myHTMLFile”?我认为它有一个扩展或'parse'方法需要获取其内容而不是将其解释为字符串? –
我不认为这个错误是在构建文档函数中,当我遍历程序时,我能够查看文档并可以看到其中的所有元素。看起来,当getElementById被调用时,它无法找到该id,但我知道它在那里,所以我为什么没有找到它是一个损失。 –