JAVA 应用 DOM4J 及 JDOM 方式解析 XML
2016-05-17 22:44
357 查看
DOM4J方式
DOM4J及 JDOM 是非官方提供的,应用起来比较简洁。步骤
获得dom4j解析器SAXReader saxr = new SAXReader();
利用dom4j解析器的read()方法解析xml,获取docuemnt对象
Document docuemnt = saxr.read(new File("src/res/ProfessionalBooks.xml"));
获得xml文件的根节点
Element rootelement = docuemnt.getRootElement();
自己创建通用方法一层一层剥开xml文件
具体代码
import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class MyDOM4j { /* * 创建一个方法一层一成剥开xml文件 */ public static void PeelXml(Element rootelement) { Iterator<Element> it = rootelement.elementIterator(); while (it.hasNext()) { Element element = it.next(); // System.out.println("........开始........."); System.out.println(); System.out.print("节点名:"+element.getName()+" "); List<Attribute> ats = element.attributes(); if (ats.size() > 0) { for (int i = 0; i < ats.size(); i++) { System.out.print("属性名:" + ats.get(i).getName() + " " + "属性值:" + ats.get(i).getValue()+" "); } } System.out.print("节点值:"+element.getTextTrim()); // System.out.println("........结束........."); if(element.elementIterator().hasNext()){ PeelXml(element); } } } public static void main(String[] args) { // TODO Auto-generated method stub // 获得dom4j解析器 SAXReader saxr = new SAXReader(); // 利用dom4j解析器的read()方法解析xml,获取docuemnt对象 try { Document docuemnt = saxr.read(new File("src/res/ProfessionalBooks.xml")); // 获得xml文件的根节点 Element rootelement = docuemnt.getRootElement(); PeelXml(rootelement); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
注意:获得节点值时要用getTextTrim()避免输出来有很多空格和换行
JDOM方式
步骤
创建JDOM的解析器,saxbuilderSAXBuilder saxbuilder = new SAXBuilder();
创建输入流,输入xml文件
FileInputStream in; in = new FileInputStream("src/res/ProfessionalBooks.xml"); InputStreamReader ins = new InputStreamReader(in, "UTF-8");
通过saxBuilder的build方法,将输入流加载到saxBuilder中获得Document对象
Document doc = saxbuilder.build(ins);
利用自己写的方法,一层一层剥开xml文件
具体代码
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; 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 MyJDOMTest { /* * 创建一个方法一层一成剥开xml文件 */ public static void PeelXml(Element rootelement) { List<Element> Childrenelement = rootelement.getChildren(); for (Element element : Childrenelement) { // System.out.println(".......开始......."); System.out.println(); System.out.print("节点名:" + element.getName() + " "); List<Attribute> atli = element.getAttributes(); if (atli.size() != 0) { for (int i = 0; i < atli.size(); i++) { System.out.print("属性名:" + atli.get(i).getName() + " " + "属性值:" + atli.get(i).getValue() + " "); } } String value = element.getTextTrim(); // if (value.getBytes().length > 0) { System.out.print("节点值:" + value); // } // System.out.print(".......结束......."); if (element.getChildren().size() > 0) { PeelXml(element); } } } public static void main(String[] args) { // TODO Auto-generated method stub // 创建JDOM的解析器,saxbuilder SAXBuilder saxbuilder = new SAXBuilder(); FileInputStream in; try { in = new FileInputStream("src/res/ProfessionalBooks.xml"); InputStreamReader ins = new InputStreamReader(in, "UTF-8"); // 通过saxBuilder的build方法,将输入流加载到saxBuilder中 Document doc = saxbuilder.build(ins); Element rootelement = doc.getRootElement(); PeelXml(rootelement); } 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(); } // 利用SAXBuilder的build()方法解析xml文件 } }
至于xml:/article/10992905.html
相关文章推荐
- java是怎么操作xml的-sax解析
- java pieces,
- 修改Eclipse的默认charset 为utf-8
- 1.4 Eclipse的安装和使用
- Spring boot学习笔记(2) 配置文件
- Java内部类
- 关于java的clone方法
- 关于java中通配符的使用规则
- Scala支持与Java的隐式转换
- JAVA第六次作业
- spring统一管理异常和访问日志
- eclipse怎么修改工作空间路径
- Java基础第八天听课总结(2)--多线程&Thread
- Java基础 - 强引用、弱引用、软引用、虚引用
- JDK1.8 源码 中的设计模式
- Java之static与final关键字
- JDK1.8源码中的设计模式
- 从头开始,学习Java Web
- eclipse 运行Maven时报错总结
- Java并发编程:Callable、Future和FutureTask