【发布时间】:2014-02-16 21:50:08
【问题描述】:
我正在尝试从一个文件中获取一个 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
如果我错了,请纠正我,但这应该会导致节点被检索。但是它返回一个空值。我不明白为什么它没有返回正确的值。注意:据我所知,在调试代码时,文档确实包含所有正确的数据。
【问题讨论】:
-
您能否向
catch添加更通用的异常? (顺便说一句,我不是 Java 人) -
另外,您正在传递“myHTMLFile”?我假设它有一个扩展名或
parse方法需要获取其内容而不是将其解释为字符串的任何内容? -
我不认为错误出在构建文档功能中,当我逐步执行程序时,我能够查看文档并可以看到其中的所有元素。似乎当 getElementById 被调用时它无法找到 id 但我知道它在那里,所以我不知道为什么它没有找到它。
-
@brett,是的,这是扩展名,我为这个问题存根。
标签: java javascript html parsing dom