我正在尝试从文件中获取一个HTML节点,以后将用于计算其所有后代数。 我在检索DOM中的元素时遇到了问题。以下是我迄今为止采取的步骤:
首先这是我的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;
}
在我的主方法中,我尝试通过getElementById方式将一个Node对象设置为文档元素,如下所示:
public Document doc = buildDocument("myHTMLFile");
org.w3c.dom.Node node = doc.getElementById("header");//the id of an html element
如果我说错了,请纠正我,但这应该会导致检索节点。然而,它返回了一个null值。我不明白为什么它没有返回正确的值。注意:调试代码时,据我所知,文档包含所有正确的数据。
catch
中添加一个更通用的异常?(顺便说一下,我不是Java专家) - Brett Zamirparse
方法需要获取其内容而不是将其解释为字符串? - Brett Zamir