java - 如何使用其属性查找 DOM 节点

标签 java html parsing dom

我已经使用 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/

相关文章:

java - 如何在给定字符串数组的情况下获取特定的 JTree 节点

java - 使用 Java API 查找提交 yarn 应用程序的用户

html - 背景用 html 重复,正文高度为 100%,用 css 粘性页脚

java - 在Java中将字符串转换为日期并根据当前日期进行排序。

java - 创建链表解析行麻烦

java - 但是,第一个 Asynctask 可以工作,第二个 Asynctask 在按下按钮时不起作用

java - 无法弄清楚空指针异常

javascript - JSF 更改 h :SelectOneMenu in JavaScript 的 BeanValue

html - 为什么 pull-right 对我的 Bootstrap 导航栏不起作用?

c - 解析配置文件中带有前导和终止空格的简单名称/值对设置 - C