📅  最后修改于: 2023-12-03 15:06:32.837000             🧑  作者: Mango
XML是一种广泛使用的数据格式,Java程序员常常需要从XML文档中提取内容。本文将介绍如何使用Java程序从XML文档中提取内容。
DOM(文档对象模型)是一种解析XML文档的方法,可以将整个XML文档加载到内存中,然后通过节点(节点是XML文档的元素)之间的关系遍历整个文档树。
以下是一个简单的Java程序,使用DOM解析XML文档:
import java.io.File;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XmlParser {
public static void main(String[] args) {
try {
File inputFile = new File("input.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputFile);
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("book");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String title = element.getElementsByTagName("title").item(0).getTextContent();
String author = element.getElementsByTagName("author").item(0).getTextContent();
String price = element.getElementsByTagName("price").item(0).getTextContent();
System.out.println("Book: " + title + " by " + author + ", price: $" + price);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码使用DocumentBuilderFactory
和DocumentBuilder
将XML文件加载到内存中,将XML的根元素整理为doc
对象,然后通过getElementsByTagName()
方法获得节点,遍历每个book节点,从中获取title,author,price的值。
JDOM是另一种解析XML文档的方法,与DOM相比更具有面向对象的特征。它可以将XML文档转换为JDOM对象模型,从而可以方便地访问XML文档的元素和属性。
以下是一个简单的Java程序,使用JDOM解析XML文档:
import java.io.File;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
public class XmlParser {
public static void main(String[] args) {
try {
File inputFile = new File("input.xml");
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(inputFile);
Element root = document.getRootElement();
List<Element> bookList = root.getChildren("book");
for (Element bookElement : bookList) {
String title = bookElement.getChildText("title");
String author = bookElement.getChildText("author");
String price = bookElement.getChildText("price");
System.out.println("Book: " + title + " by " + author + ", price: $" + price);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码使用SAXBuilder
将XML文件加载到内存中,然后将XML文件整理为document
对象,通过getChildren()
方法获得子元素,遍历每个book节点,从中获取title,author,price的值。
本文介绍了如何使用DOM和JDOM两种方法从XML文档中提取内容的Java程序。DOM解析XML文档的内存开销较大,但可以访问文件中的任意节点;JDOM解析XML文档的内存开销较小,但API相对较少,较难处理复杂的XML文档。
(完)