Java XML 转 List
介绍
在 Java 中,我们经常需要将 XML 数据转换为 List 数据结构进行处理。XML 是一种常用的数据交换格式,而 List 是一种常用的数据容器。本文将介绍如何使用 Java 实现 XML 转 List 的功能,并提供示例代码。
XML 数据格式
在开始之前,我们先来了解一下 XML 的数据格式。XML 使用标记来描述数据的结构和内容。标记由开始标签、结束标签和标签之间的内容组成。
以下是一个简单的 XML 示例:
<books>
<book>
<title>Java 编程</title>
<author>John Smith</author>
</book>
<book>
<title>Python 入门</title>
<author>Lisa Johnson</author>
</book>
</books>
在这个示例中,<books>
是开始标签,</books>
是结束标签。<book>
是另一个开始标签,</book>
是对应的结束标签。<title>
和 <author>
是嵌套在 <book>
标签中的标签。
使用 JAXP 解析 XML
Java 提供了 JAXP (Java API for XML Processing) 来解析和处理 XML 数据。我们可以使用 JAXP 中的 DocumentBuilder
类来解析 XML 数据,并将其转换为一个 Document 对象。
以下是使用 JAXP 解析 XML 的示例代码:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class XMLParser {
public Document parse(String xmlString) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(new InputSource(new StringReader(xmlString)));
}
}
上述代码中,我们首先创建了一个 DocumentBuilderFactory
对象,然后使用该对象创建一个 DocumentBuilder
对象。接下来,我们将 XML 字符串转换为一个 InputSource
对象,并使用 parse
方法将其解析为一个 Document
对象。
将 XML 转为 List
一旦我们将 XML 数据解析为一个 Document
对象,就可以开始将其转换为 List 数据结构了。
假设我们要将上述的 XML 数据转换为一个 List,其中每个元素代表一本书。我们可以使用 getElementsByTagName
方法来获取指定标签名的所有元素,并遍历这些元素来提取书籍的信息。
以下是将 XML 转换为 List 的示例代码:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class XMLToListConverter {
public List<Book> convert(Document document) {
List<Book> books = new ArrayList<>();
Element rootElement = document.getDocumentElement();
NodeList bookNodes = rootElement.getElementsByTagName("book");
for (int i = 0; i < bookNodes.getLength(); i++) {
Element bookElement = (Element) bookNodes.item(i);
String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
String author = bookElement.getElementsByTagName("author").item(0).getTextContent();
books.add(new Book(title, author));
}
return books;
}
}
上述代码中,我们首先创建了一个空的 List 对象 books
。然后,我们获取根元素 books
,再通过 getElementsByTagName
方法获取所有的 book
元素。接下来,我们遍历这些 book
元素,并提取每个元素中的 title
和 author
信息,最后将其添加到 List 中。
示例代码
下面是一个完整的示例,演示了如何使用 JAXP 将 XML 数据转换为 List。
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class XMLToListConverter {
public List<Book> convert(String xmlString) throws Exception {
List<Book> books = new ArrayList<>();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xmlString)));
Element rootElement = document.getDocumentElement();
NodeList bookNodes = rootElement.getElementsByTagName("book");
for (int i = 0; i < bookNodes.getLength(); i++) {
Element bookElement = (Element) bookNodes.item(i);
String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
String author = bookElement