Java DOM 解析器 returns 空文档
Java DOM parser returns null document
我有一个 HTML 模板,我想在其中阅读:
<html>
<head>
<title>TEST</title>
</head>
<body>
<h1 id="hey">Hello, World!</h1>
</body>
</html>
我想找到 ID 为 hey
的标签,然后粘贴新内容(例如新标签)。为此,我使用 DOM 解析器。但是我的代码 returns 我 null
:
public static void main(String[] args) {
try {
File file = new File("C:\Users\<username>\Desktop\template.html");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(file);
doc.getDocumentElement().normalize();
System.out.println(doc.getElementById("hey")); // returns null
} catch (Exception e) {
e.printStackTrace();
}
}
我做错了什么?
您正在尝试使用 Java XML API 解析一段 XML,它非常符合 XML 规范并且不'帮助临时开发人员。
在 XML 中,名为 id
的属性不会自动属于 ID
类型,因此 XML 实现无法通过 .getElementById()
获取它.您要么使用另一个库(例如 Jsoup),要么指示解析器将 id
视为 ID(通过 DTD),或者您使用自定义代码。
我将您的示例修改为使用 jsoup
public static void main(String[] args) {
try {
File file = new File("C:\Users\<username>\Desktop\template.html");
Document doc = Jsoup.parse(file, "UTF8");
Element elementById = doc.getElementById("hey");
System.out.println("hey ="+doc.getElementById("hey").ownText());
System.out.println("hey ="+doc.getElementById("hey"));
} catch (Exception e) {
e.printStackTrace();
}
}
我有一个 HTML 模板,我想在其中阅读:
<html>
<head>
<title>TEST</title>
</head>
<body>
<h1 id="hey">Hello, World!</h1>
</body>
</html>
我想找到 ID 为 hey
的标签,然后粘贴新内容(例如新标签)。为此,我使用 DOM 解析器。但是我的代码 returns 我 null
:
public static void main(String[] args) {
try {
File file = new File("C:\Users\<username>\Desktop\template.html");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(file);
doc.getDocumentElement().normalize();
System.out.println(doc.getElementById("hey")); // returns null
} catch (Exception e) {
e.printStackTrace();
}
}
我做错了什么?
您正在尝试使用 Java XML API 解析一段 XML,它非常符合 XML 规范并且不'帮助临时开发人员。
在 XML 中,名为 id
的属性不会自动属于 ID
类型,因此 XML 实现无法通过 .getElementById()
获取它.您要么使用另一个库(例如 Jsoup),要么指示解析器将 id
视为 ID(通过 DTD),或者您使用自定义代码。
我将您的示例修改为使用 jsoup
public static void main(String[] args) {
try {
File file = new File("C:\Users\<username>\Desktop\template.html");
Document doc = Jsoup.parse(file, "UTF8");
Element elementById = doc.getElementById("hey");
System.out.println("hey ="+doc.getElementById("hey").ownText());
System.out.println("hey ="+doc.getElementById("hey"));
} catch (Exception e) {
e.printStackTrace();
}
}