我已经使用 JAVA 将我的 HTML/JSP 解析为 DOM 在编译时。现在我有了 w3c.dom.Document 对象,假设是下面的 HTML
.....
....
<input type="text" name="EnterName"/>
<select name="SelectOptions">
<option>First</option>
<option>Second</option>
</select>
......
.......
我知道元素的属性值。这里“EnterName”是节点“input”的“name”属性值。
假设我有 DOM 中可用的所有节点的属性值(如上面 HTML 的“EnterName”、“SelectOptions”),我如何才能获得一个节点,其中特定属性可用给定值。谢谢
编辑:
I will never know whats the HTML contents. My program should run on given list of HTML/JSP files and I have with me some element names. Here the element name refers to the label/name of the fields available in the HTML/JSP. So I need to traverse through all the files get the node where it has the same label/name and get the node.
最佳答案
尝试这样的事情:
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse("yourDocumentName");
doc.getDocumentElement().normalize();
NodeList nlList = doc.getElementsByTagName("input");
for (int indx= 0; indx < nList.getLength(); indx++) {
Element eElement = (Element) nList.item(indx);
if(eElement.getAttribute("name").equals("EnterName")){
System.out.println("EnterName: " + eElement.getNodeValue());
}
}
NodeList nlList1 = doc.getElementsByTagName("select");
for (int indx= 0; indx < nList1.getLength(); indx++) {
Element eElement = (Element) nList1.item(indx);
if(eElement.getAttribute("name").equals("SelectOptions")){
System.out.println("SelectOptions: " + eElement.getNodeValue());
}
}
如果您可以将“id”添加到您的元素中,那么它会容易得多:
<input type="text" name="EnterName" id="name"/>
<select name="SelectOptions" id="options">
...
Element nameElement = doc.getElementbyId("name");
System.out.println("EnterName: " + nameElement.getNodeValue());
Element selectElement = doc.getElementbyId("name");
System.out.println("SelectOptions: " + selectElement.getNodeValue());
关于java - 如何使用其属性查找 DOM 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13283137/