JDOM操作XML实例
来源:互联网 发布:及时生成字幕软件 编辑:程序博客网 时间:2024/06/04 19:46
使用JDOM来解析XML文件
JDOM是使用Java语言编写的、用于读、写、操作XML的一套组件。JDOM具有DOM修改文件的优点,JD和SAX读取快速的优点。
JDOM的主要操作类:
Document 定义了一个XML文件的各种操作,用户可以通过它所提供的方法来存取根元素。
Element 定义了一个XML元素的各种操作,用户可以通过它得到元素的文字内容,属性值和子节点。
Attribute XML文件元素中属性的各个操作。
XMLOutputter 将一个JDOM结构树格式化为一个XML文件,并且以输出流的方式加以输出。
实例:使用JDOM生成如下结构的xml
<?xml version="1.0" encoding="GBK" ?> <QQInfo> <info id="tsby"> <name>天水伯约</name> <QQ>1031568262</QQ> </info> </QQInfo>
public static void main(String[] args) {Element QQInfo = new Element("QQInfo");Element info = new Element("info");Element name = new Element("name");Element QQ = new Element("QQ");Attribute attr = new Attribute("id","tsby");name.setText("天水伯约");QQ.setText("1031568262");info.addContent(name);info.addContent(QQ);info.setAttribute(attr);QQInfo.setContent(info);Document doc = new Document(QQInfo);XMLOutputter out = new XMLOutputter();out.setFormat(out.getFormat().setEncoding("GBK"));try {out.output(doc, new FileOutputStream("D:\\JDOM_QQInfo.xml"));} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
①通过上面代码,定义一个根节点QQInfo 然后定义节点info name QQ,定义个id属性,并初始化值。用过Element类的setText()方法设置节点name,QQ的内容。
②使用Element类的addContent()方法,将name节点、QQ节点做info的子节点。同样使用该方法,将info节点作为QQInfo的子节点。
③使用Document doc = new Document(QQInfo),创建一个QQInfo作为根节点的Document对象。
④XMLOutputter out = new XMLOutputter();创建XMLOutputter对象,用于输出XML文件。
out.setFormat(out.getFormat().setEncoding("GBK"));设置输出的编码格式
out.output(doc, new FileOutputStream("D:\\JDOM_QQInfo.xml"));输出XML文件到D盘的JDOM_QQInfo.xml文件中。
程序运行结果和预期的一样,D盘下生成JDOM_QQInfo.xml文件。
<?xml version="1.0" encoding="GBK"?><QQInfo><info id="tsby"><name>天水伯约</name><QQ>1031568262</QQ></info></QQInfo>
生成XML文件已经完成,接下来演示读取该XML文件并解析。
public static void main(String[] args) {//使用JDOM读取本地文件解析SAXBuilder build = new SAXBuilder();Document doc = null;try {doc = build.build("D:\\JDOM_QQInfo.xml");} catch (JDOMException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Element QQInfo = doc.getRootElement();List<Element> list = QQInfo.getChildren("info");for(int i=0;i<list.size();i++) {Element info = list.get(i);String name = info.getChildText("name");String QQ = info.getChildText("QQ");String id = info.getAttributeValue("id");System.out.println("name:"+name+" QQ:"+QQ+" id:"+id);}}
运行结果为:
name:天水伯约 QQ:1031568262 id:tsby
从程序中可以看出,JDOM使用了SAX(simple APIs for XML)解析的方式来操作。
①首先建立一个SAXBuilder对象,用于构建Doc
SAXBuilder builder = new SAXBuilder()
②读取本地的XML文件并构建Document
Document doc = builder.build("D:\\JDOM_QQInfo.xml");
③利用Document对象的方法RootElement()得到XML的根元素
Element QQInfo = doc.getRootElement();
④有了这个根元素就可以通过getChildren()方法一次取得所有的info元素,在JDOM中所有的节点都是以集合的形式返回的,集合中每一个对象都是Element实例
List<Element> list = QQInfo.getChildren("info")
⑤遍历循环出每个Element,通过getChildText()取得节点的值,通过getAttributeValue()取得属性的值(或者getAttribute("id").getValue())
- JDOM操作XML实例
- Base64 XML JDom 实例
- JDOM操作XML例
- JDOM操作XML文件
- JDOM操作XML文件
- JDOM操作XML文件
- JDOM操作XML文件
- JDOM操作XML文件
- 使用JDom操作XML
- jdom操作xml
- JDOM操作XML
- JDOM操作XML
- jdom操作xml
- jdom操作xml文件
- JDOM 操作XML
- jdom操作Xml示例
- Jdom 操作XML
- JDOM、Dom4j操作XML
- <<Oracle Applications DBA 基础(第二期)>>Week 10 exercise
- 黑马程序员 手写山寨版的金山词霸
- OCP 1Z0 053 147
- 字符串比较问题
- 插入排序
- JDOM操作XML实例
- MySQL-->基础知识-->mysql my.cnf 配置建议
- 数组中最出现一次的元素
- 斗地主系列之牌型大小比较
- Intentservice自己的一点感受关于java.lang.NullPointerException
- poj 1155 TELE
- Keil C51 详细设置
- ubuntu 设置默认文件管理器
- 简单的PHP实现倒计时方法