使用JDOM解析XML文档
JDOM是一种使用 XML(标准通用标记语言下的一个子集) 的独特 Java 工具包。下面我们来看一下怎么使用
JDOM来解析XML文档。
首先下载JDOM的jar包,并导入到工程中。具体的操作方法这里不再赘述了,大佬们一定不会在乎这个东西。
下面就在说一说具体的操作步骤吧。
1 . 创建一个SAXBuilder对象。
SAXBuilder saxBuilder = new SAXBuilder();
2 . 调用SAXBuilder对象的build()方法。(Document对象是org.jdom2.Document包下的)
Document document = saxBuilder.build("book.xml");
3 . 调用document对象的getRootElement()方法获取根节点。
Element element = document.getRootElement();
4 . 调用Element对象的getChildren()方法获取根节点的子节点。
List<Element> books = element.getChildren();
5 . 调用getAttributes()方法或者getAttributeValue("id")方法获取节点属性。
String value = book.getAttributeValue("id");
//List<Attribute> bookAttrs = book.getAttributes();
6 . 调用getChildren()方法或者getChild()方法再次获得其子节点。
List<Element> bookChildren = book.getChildren();
下面是一个简单的实例,供大家参考。
book.xml
<?xml version="1.0" encoding="UTF-8" ?>
<bookstore>
<book id="1">
<name>111</name>
<author>222</author>
</book>
<book id="2">
<name>333</name>
<author>444</author>
</book>
</bookstore>
jdom.java
package com.lpp.test;
import java.io.IOException;
import java.util.List;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
public class jdom
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
SAXBuilder saxBuilder = new SAXBuilder();
try
{
Document document = saxBuilder.build("book.xml");
Element element = document.getRootElement();
List<Element> books = element.getChildren();
for (Element book : books)
{
System.out.println("开始解析!第" + (books.indexOf(book) + 1) + "本");
// String value = book.getAttributeValue("id");
// System.out.println("id:"+value);
List<Attribute> bookAttrs = book.getAttributes();
for (Attribute bookAttr : bookAttrs)// 和上面的效果一样
{
String attrName = bookAttr.getName();
String attrValue = bookAttr.getValue();
System.out.println("属性" + attrName + ":" + attrValue);
}
List<Element> bookChildren = book.getChildren();
for (Element bookChild : bookChildren)
{
String bookChildElementName = bookChild.getName();
String bookChildElementValue = bookChild.getValue();
System.out.println("节点" + bookChildElementName + ":" + bookChildElementValue);
}
System.out.println("结束解析!第" + (books.indexOf(book) + 1) + "本");
}
} catch (JDOMException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}