Java XML解析 - 利用JDOM解析XML

JDOM是一个开源项目,它基于树形结构,利用纯Java的技术对XML文档实现解析、生成、序列化及多种操作。JDOM与DOM非常类似,它是处理XML的纯JAVA API,API大量使用了Collections类,且JDOM仅使用具体类而不使用接口。JDOM 它自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档(尽管它还可以将以前构造的 DOM 表示作为输入)。

JDOM定义

JDOM中JAXP是用于XML语法分析的Java API,包含了下面三个包:

1. org.w3c.dom    W3C推荐的用于XML标准文档对象模型的Java工具。

2. org.xml.sax    用于对XML进行语法分析的事件驱动的简单API。

3. javax.xml.parsers    工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具,JDOM能够替换org.w3c.dom软件包来有计划地操作XML文档。

JDOM主要用来弥补DOM和SAX在实际应用当中的不足。主要是SAX没有文档修改、随机访问及输出的功能,而DOM,Java程序员在使用时总觉得不太方便(比如DOM定义了自己的Text类而不是使用Java的String)。

JDOM解析xml步骤

1. 建立解析器

SAXBuilder sb=new SAXBuilder();

//返回Document文档

Document doc=sb.build(new FileInputStream(XmlFname));

2. DOM处理

3. DOM结果处理(输出/保存)

Format fo=Format.getCompactFormat();//取得输出格式Format

//fo.setEncoding("GB2312");

XMLOutputter outputter=new XMLOutputter(fo);

FileWriter write=new FileWriter(XmlFname);//这里可以是PrintWriter形式的(任何Writer流).

outputter.output(doc,write/*Writer流,见构造函数*/);

write.close();

JDOM解析xml例子

//xml文件

1

1

武汉

2

石家庄

3

北京

2

1

重庆

2

武汉

3

上海

4

东京

3

1

上海

2

纽约

//解析XML testJDOM.java

public class testJDOM {

public static void main(String[] args) {

try {

File file = new File("AirPortLine.xml");

SAXBuilder builder = new SAXBuilder();

Document doc = builder.build(file);

parseJDOM(doc);// 解析XML文档

} catch (Exception e) {

System.out.println("Can't read the file");

}

}

// 解析XML文档

private static void parseJDOM(Document doc) {

Element root = doc.getRootElement();

List lineList = root.getChildren("line");// 也可使用root.getChildren()

for (Iterator iter = lineList.iterator(); iter.hasNext();) {

Element lineElement = (Element) iter.next();// 获取元素

String lid = lineElement.getAttributeValue("lid");// 获取元素的lid属性值

String num = lineElement.getAttributeValue("num");// 获取元素的num属性值

System.out.println("==lid:" + lid);

System.out.println("==num:" + num);

Element idElement = lineElement.getChild("id");// 获得下标签下的子元素

String id = idElement.getText();// // 获得下标签下的子元素值

System.out.println("==路线id:" + id);

List stationList = lineElement.getChildren("station");// 获得下列表

for (Iterator subIter = stationList.iterator(); subIter.hasNext();) {

Element stationElement = (Element) subIter.next();// 获取元素

Element sidElement = stationElement.getChild("sid");// 获得下标签下的子元素

Element snameElement = stationElement.getChild("sname");// 获得下标签下的子元素

String sid = sidElement.getText();// 获得下标签下的子元素值

String sname = snameElement.getText();// 获得下标签下的子元素值

System.out.println("==路线sid:" + sid);

System.out.println("==路线sname:" + sname);

}

}

}

}

总结

1. JDOM是作为一种轻量级的API被制定的,最主要的是它是以Java为中心的。它在遵循DOM主要规则的基础上除去了上述缺点。

2. JDOM是Java平台专用的,只要有可能,API都使用Java语言的内建String支持。

3. 在JDOM中,XML元素就是Element的实例,XML属性就是Attribute的实例,XML文档本身就是Document的实例。

4. 因为JDOM对象就是像Document、Element和Attribute这些类的直接实例,因此创建一个新的JDOM对象就如在Java语言中使用new操作符一样容易。它还意味着不需要进行工厂化接口配置——JDOM的使用是直截了当的。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

java xml解析 jdom_Java XML解析 - 利用JDOM解析XML相关推荐

  1. JavaEE XML的读写(利用JDom对XML文件进行读写)

    1.有关XML的写 利用JDom2包,JDom2这个包中,至少引入org.jdom2.*;如果要进行XML文件的写出,则要进行导入org.jdom2.output.*; package com.lit ...

  2. Java学习总结(随笔)——利用JSON解析实现网络下载

    利用JSON实现网络下载 1.下载json字符串: (1)将网址封装到URL中:URL url=new URL("网址"); (2)利用url打开HTTP: HttpURLConn ...

  3. 利用jdom生成XML文件

    public class TestXml {      public void bulidXml() throws FileNotFoundException, IOException{   //创建 ...

  4. 解析单句sql_SqlParser 一个利用正则表达式解析单句SQL的类

    原SQL为select * from dual 解析后的SQL为 select * from dual 原SQL为SELECT * frOm dual 解析后的SQL为 select * from d ...

  5. python 解析pb文件_利用Python解析json文件

    写在前面 在金融风控领域,我们经常会使用到json格式的数据,例如运营商数据.第三方数据等.而这些数据往往不能直接作为结构化数据进行分析和建模.本文将介绍一种简单的.可复用性高的基于pandas的方法 ...

  6. java dom4j解析xml 对象_Java XML解析 - 利用DOM4j解析XML

    Java XML解析 - 利用DOM4j解析XML dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP ...

  7. PHP 利用json_decode解析json为null问题解决

    PS:原创文章,如需转载,请注明出处,谢谢! 本文地址:http://flyer0126.iteye.com/blog/2382708 今天遇到json解析问题,PHP利用json_decode解析j ...

  8. java xml中的冒号_Java jdom解析xml文件带冒号的属性

    Java jdom解析xml文件带冒号的属性 如果xml文件解析带了冒号的属性,一般都是要特别处理,这里是命名空间,N年前遇到过一次忘记记录,后来也忘了,这次再记录下. 解决了,记录下,分享给大家,百 ...

  9. java jdom格式_Java全面解析XML格式串(JDOM解析)

    搜索热词 Java全面解析XML格式串(JDOM解析) import java.io.IOException; import java.io.StringReader; import java.uti ...

最新文章

  1. 15 分钟搭建一个基于XLNET的文本分类模型——keras实战
  2. 打开pix4d无有效许可_我市两家企业通过危险废物综合经营许可证专家核查
  3. CentOS 安装MySQL rpm方式安装
  4. bat 实现批量备份文件
  5. 怎样练习一万小时(转)
  6. alwayson故障转移群集服务器 修改虚拟主机名及IP地址
  7. Windows Server 2008 多元密码策略配置
  8. Atitit 大数据体系图 大数据 技术 数据采集 gui自动化 爬虫 Nui自动化  Ocr技术 Tts语音处理 文档处理(office zip等) html文档处理解析 转
  9. 交易撮合引擎原理与实现【含源码】
  10. 在ftp服务器上搜索文件名,ftp服务器上搜索文件
  11. 芒果DB:mongodb
  12. A星寻路算法详解(完整代码+图片演示)
  13. 8种教你如何快速提高平面设计技巧
  14. 用开源求解器和Pyomo实现灵活的班次安排
  15. Android实现图书借阅管理系统的开发
  16. 零基础也能看懂的五大网络安全技术,学网络真的可以很简单
  17. HMAC和NMAC 生日攻击
  18. 算法 博弈论( 初级Nim游戏)
  19. border-box宽度计算方式
  20. 根据经纬度坐标计算距离sql语句

热门文章

  1. 小破孩qq表情包 奥运版 官网
  2. JSR303的基本使用
  3. 玩转鼠标右键,只需要这两个~
  4. 专栏五:食管癌Cancer Cell文章生信部分解析
  5. 科技查新委托单该怎么填?
  6. 2023秋招面经整理(Python+数据库+Linux+测试)
  7. 虚拟机安装windows7的ISO镜像文件
  8. GemPooling
  9. 微信小程序——Git版本管理
  10. ODPS到ADS数据迁移指南