Java解析XML汇总攻略
在Java开发中,我们常常需要解析XML文件,从而获取其中的数据。下面是Java解析XML汇总攻略,包括DOM解析、SAX解析、JDOM解析和DOM4J解析。
DOM解析
DOM(Document Object Model)解析是一种基于节点树的解析方法,可以将XML解析为树形结构,并提供API来访问、修改XML数据。
Java提供了javax.xml.parsers
包下的DocumentBuilderFactory
和DocumentBuilder
类来解析XML文件。以下是一个示例代码:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DomParse {
public static void main(String[] args) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("xmlFile.xml");
NodeList nodeList = doc.getElementsByTagName("book");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
String id = node.getAttributes().getNamedItem("id").getNodeValue();
String title = node.getChildNodes().item(1).getFirstChild().getNodeValue();
String author = node.getChildNodes().item(3).getFirstChild().getNodeValue();
System.out.println("id:" + id + ", title:" + title + ", author:" + author);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
SAX解析
SAX(Simple API for XML)解析是一种基于事件驱动的解析方法,可以逐行读取XML文件,并使用回调函数处理XML数据。
Java提供了javax.xml.parsers
包下的SAXParserFactory
和DefaultHandler
类来解析XML文件。以下是一个示例代码:
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SaxParse {
public static void main(String[] args) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean bId = false;
boolean bTitle = false;
boolean bAuthor = false;
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("book")) {
String id = attributes.getValue("id");
System.out.print("id: " + id + ", ");
} else if (qName.equalsIgnoreCase("title")) {
bTitle = true;
} else if (qName.equalsIgnoreCase("author")) {
bAuthor = true;
}
}
public void endElement(String uri, String localName, String qName) throws SAXException {
}
public void characters(char ch[], int start, int length) throws SAXException {
if (bTitle) {
System.out.print("title: " + new String(ch, start, length) + ", ");
bTitle = false;
} else if (bAuthor) {
System.out.println("author: " + new String(ch, start, length));
bAuthor = false;
}
}
};
saxParser.parse("xmlFile.xml", handler);
} catch (Exception e) {
e.printStackTrace();
}
}
}
JDOM解析
JDOM是一种基于Java的XML处理框架,提供了一个类库来解析、创建和操作XML文件。
Java提供了org.jdom2.input.SAXBuilder
类来解析XML文件。以下是一个示例代码:
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
public class JdomParse {
public static void main(String[] args) {
try {
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build("xmlFile.xml");
Element rootNode = document.getRootElement();
List<Element> bookList = rootNode.getChildren("book");
for (Element book : bookList) {
String id = book.getAttributeValue("id");
String title = book.getChild("title").getText();
String author = book.getChild("author").getText();
System.out.println("id:" + id + ", title:" + title + ", author:" + author);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
DOM4J解析
DOM4J是一个Java的XML处理框架,提供了一个类库来解析、创建和操作XML文件。
Java提供了org.dom4j.io.SAXReader
类来解析XML文件。以下是一个示例代码:
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jParse {
public static void main(String[] args) {
try {
SAXReader reader = new SAXReader();
Document document = reader.read("xmlFile.xml");
Element root = document.getRootElement();
List<Element> bookList = root.elements("book");
for (Element book : bookList) {
String id = book.attributeValue("id");
String title = book.elementText("title");
String author = book.elementText("author");
System.out.println("id:" + id + ", title:" + title + ", author:" + author);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上就是Java解析XML汇总攻略。其中示例代码可以在指定的XML文件(xmlFile.xml
)中获取book
节点的id
、title
和author
元素的值。例如:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="1">
<title>Java编程思想</title>
<author>Bruce Eckel</author>
</book>
<book id="2">
<title>Head First Java</title>
<author>Kathy Sierra</author>
</book>
</catalog>
以上示例代码可以解析该XML文件中的两个book
节点的信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java解析xml汇总_动力节点Java学院整理 - Python技术站