使用JDOM方式解析XML
Posted 柠檬学园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JDOM方式解析XML相关的知识,希望对你有一定的参考价值。
一、需要导入JDOM包http://www.jdom.org/
二、XML文件
三、开始解析
public class JDOMTest {
public static void main(String[] args) {
// 进行对books.xml文件的JDOM解析
// 准备工作
// 1.创建一个SAXBuilder的对象
SAXBuilder builder = new SAXBuilder();
try {
// 2.创建一个输入流,将xml文件加载到输入流中
InputStream in = new FileInputStream("books.xml");
// 3.通过saxBuilder的build方法,将输入流加载到saxBuilder中 Document document = builder.build(in);
// 4.通过document对象获取xml文件的根节点
Element rootElement = document.getRootElement();
// 5.获取根节点下的子节点的List集合
List<Element> bookList = rootElement.getChildren();
for (Element book : bookList) {
System.out.println("==========开始解析第" + (bookList.indexOf(book) + 1) + "本书==========");
List<Attribute> attrBook = book.getAttributes();
// 解析book的属性集合
for (Attribute attr : attrBook) {
String attrName = attr.getName();
String attrValue = attr.getValue();
System.out.println("属性:"+attrName+"---值:"+attrValue);
}
List<Element> bookChildren = book.getChildren();
// 对book节点的子节点的节点名以及节点值的遍历
for (Element element : bookChildren) {
System.out.print("节点:"+element.getName()+"---值:"); System.out.println(element.getValue());
}
System.out.println("==========结束解析第"
+ (bookList.indexOf(book) + 1) + "本书==========");
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
解析结果:
XML包放置问题
直接在你的工程下面建一个xml目录,访问时就直接用xml/XXX.xml就行了
JAVA解析XML实例
Java解析XML的四种方法—DOM/SAX/jdom/dom4j
配制文件(要放在src的根目录下) test.xml
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<HD>
<disk name="C">
<capacity>8G</capacity>
<directories>200</directories>
<files>1580</files>
</disk>
<disk name="D">
<capacity>10G</capacity>
<directories>500</directories>
<files>3000</files>
</disk>
</HD>
Java代码
package com.phl;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class Sample1 {
public static void main(String[] args) throws Exception {
SAXBuilder sb = new SAXBuilder();// 创建一个SAXBuilder对象
Document doc = sb.build(Sample1.class.getClassLoader().getResourceAsStream("test.xml"));
// 构造文档对象
Element root = doc.getRootElement(); // 获取根元素
List list = root.getChildren("disk");// 取名字为disk的所有元素
for (int i = 0; i < list.size(); i++) {
Element element = (Element) list.get(i);
String name = element.getAttributeValue("name");// 获取元素中属性为name的值
String capacity = element.getChildText("capacity");// 取disk子元素capacity的内容
String directories = element.getChildText("directories");
String files = element.getChildText("files");
System.out.println("磁盘信息:");
System.out.println("分区盘符:" + name);
System.out.println("分区容量:" + capacity);
System.out.println("目录数:" + directories);
System.out.println("文件数:" + files);
System.out.println("-----------------------------------");
}
}
}
以上分享如果未能解决你的问题,
可留言评论你们学习过程遇到的问题,
我们将于下期内容更新时根据大家的提问和需求做出解答。
PS:特此鸣谢本内容提出者@华强 同学
以上是关于使用JDOM方式解析XML的主要内容,如果未能解决你的问题,请参考以下文章
XML--Java中的四种常见解析方式--jdom与dom4j