Java:使用DocumentBuilderFactory调用XML的方法实例
在Java中,DocumentBuilderFactory
是一个工厂类,用来创建DOM解析器对象。使用DocumentBuilderFactory
,可以将XML文档解析为DOM对象。本文将介绍使用DocumentBuilderFactory
来解析XML文档的方法,同时提供两个示例说明。
1. DocumentBuilderFactory的创建
要使用DocumentBuilderFactory
来解析XML文档,首先需要创建一个DocumentBuilderFactory
对象。可以使用以下代码来创建DocumentBuilderFactory
对象:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2. 解析XML文档
创建DocumentBuilderFactory
对象后,可以使用其来解析XML文档。可以使用以下代码来解析XML文档:
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("example.xml"));
上述代码创建了一个DocumentBuilder
对象,并使用其来解析文件名为example.xml
的XML文档。在执行解析操作时,可能会抛出以下异常:
- IOException:读取XML文档时发生了错误。
- SAXException:XML文档不符合XML标准。
- ParserConfigurationException:解析器的配置不正确。
解决这些异常的方法超出本文讨论范围,读者可以查阅相关资料来深入学习。
3. 使用DOM对象
解析XML文档之后,可以使用DOM对象来访问XML文档的内容。可以使用以下代码来访问DOM对象:
Element rootElement = document.getDocumentElement();
NodeList nodes = rootElement.getElementsByTagName("book");
for (int i = 0; i < nodes.getLength(); i++) {
Element bookElement = (Element) nodes.item(i);
String title = bookElement.getAttribute("title");
System.out.println("Title: " + title);
}
上述代码使用DOM API来遍历XML文档中所有名为book
的节点,并输出每个节点的title
属性的值。
4. 示例说明
下面提供两个示例,来说明如何使用DocumentBuilderFactory
来解析XML文档。
示例一
假设有一个XML文档如下:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book title="Java核心技术">
<author>Cay S. Horstmann</author>
<publisher>机械工业出版社</publisher>
<price>88.00</price>
</book>
<book title="Java编程思想">
<author>Bruce Eckel</author>
<publisher>机械工业出版社</publisher>
<price>108.00</price>
</book>
</books>
使用DocumentBuilderFactory
来解析上述XML文档,可以使用以下代码:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
public class Example1 {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("example.xml"));
Element rootElement = document.getDocumentElement();
NodeList nodes = rootElement.getElementsByTagName("book");
for (int i = 0; i < nodes.getLength(); i++) {
Element bookElement = (Element) nodes.item(i);
String title = bookElement.getAttribute("title");
System.out.println("Title: " + title);
String author = bookElement.getElementsByTagName("author").item(0).getTextContent();
System.out.println("Author: " + author);
String publisher = bookElement.getElementsByTagName("publisher").item(0).getTextContent();
System.out.println("Publisher: " + publisher);
String price = bookElement.getElementsByTagName("price").item(0).getTextContent();
System.out.println("Price: " + price);
}
}
}
上述代码输出结果为:
Title: Java核心技术
Author: Cay S. Horstmann
Publisher: 机械工业出版社
Price: 88.00
Title: Java编程思想
Author: Bruce Eckel
Publisher: 机械工业出版社
Price: 108.00
示例二
假设有一个XML文档如下:
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee id="100">
<name>张三</name>
<age>25</age>
<gender>男</gender>
<department>研发部</department>
</employee>
<employee id="101">
<name>李四</name>
<age>28</age>
<gender>女</gender>
<department>市场部</department>
</employee>
</employees>
使用DocumentBuilderFactory
来解析上述XML文档,可以使用以下代码:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
public class Example2 {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("example.xml"));
Element rootElement = document.getDocumentElement();
NodeList nodes = rootElement.getElementsByTagName("employee");
for (int i = 0; i < nodes.getLength(); i++) {
Element employeeElement = (Element) nodes.item(i);
String id = employeeElement.getAttribute("id");
System.out.println("ID: " + id);
String name = employeeElement.getElementsByTagName("name").item(0).getTextContent();
System.out.println("Name: " + name);
String age = employeeElement.getElementsByTagName("age").item(0).getTextContent();
System.out.println("Age: " + age);
String gender = employeeElement.getElementsByTagName("gender").item(0).getTextContent();
System.out.println("Gender: " + gender);
String department = employeeElement.getElementsByTagName("department").item(0).getTextContent();
System.out.println("Department: " + department);
}
}
}
上述代码输出结果为:
ID: 100
Name: 张三
Age: 25
Gender: 男
Department: 研发部
ID: 101
Name: 李四
Age: 28
Gender: 女
Department: 市场部
结论
使用DocumentBuilderFactory
可以很方便地解析XML文档,并且使用DOM API可以很方便地访问XML文档的内容。读者可以根据自己的需求,编写相关的代码,以便更有效地使用XML文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java:DocumentBuilderFactory调用XML的方法实例 - Python技术站