JDOM及DOM4J解析xml文件
来源:互联网 发布:淘宝热卖 编辑:程序博客网 时间:2024/03/28 17:44
JDOM及DOM4J都是java非官方的解析方式,所以都要引入jar包,JDOM方式需要导入jdom.jar,DOM4J方式需要导入dom4j.jar
解析xml文件有时会出现乱码问题:xml文件中定义的encoding不匹配
解决方法:
(1)针对xml文件:修改encoding字符集
(2)针对代码:创建字符流时,使用InputStreamReader(in, charsetName)
JDOM解析代码:
package com.imooc.jdomtest;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.List;import org.jdom.Attribute;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;public class JDOMTest { /** * @param args */ @SuppressWarnings("unchecked") public static void main(String[] args) { // 进行对book.xml文件的解析工作 // 1.创建一个SAXBuilder的对象 SAXBuilder saxBuilder = new SAXBuilder(); try { // 2.创建一个输入流,将xml文件加载到输入流中 InputStream is = new FileInputStream("book.xml"); // 3.通过SAXBuilder的build方法,将输入流加载到SAXBuilder中 Document document = saxBuilder.build(is); // 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) + "本书====="); // //知道属性名称时 // Attribute att=book.getAttribute("id"); // 解析book的属性(针对不清楚属性个数和名称) List<Attribute> attrList = book.getAttributes(); // 遍历attrList for (Attribute attr : attrList) { // 获取属性名 String attrName = attr.getName(); // 获取属性值 String attrValue = attr.getValue(); System.out .println("属性名:" + attrName + "--属性值:" + attrValue); } // 对book结点的子节点进行遍历 List<Element> bookChildren = book.getChildren(); for (Element child : bookChildren) { System.out.println("结点名:" + child.getName() + "--结点值:" + child.getValue()); } System.out.println("======结束解析第" + (bookList.indexOf(book) + 1) + "本书====="); } } catch (JDOMException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
DOM4J解析代码:
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 DOM4jTest { /** * @param args */ @SuppressWarnings("unchecked") public static void main(String[] args) { // 解析book.xml // 创建SAXReader对象 SAXReader reader = new SAXReader(); try { // 通过reader对象的read方法加载xml文件 Document document = reader.read(new File("book.xml")); // 通过document对象获得根节点 Element bookstore = document.getRootElement(); // 通过element对象elementIterator()方法获得迭代器 Iterator it = bookstore.elementIterator(); // 遍历迭代器,获取根节点中的信息 while (it.hasNext()) { System.out.println("=================开始遍历某一本书================"); Element book = (Element) it.next(); // 获取book的属性名和属性值 List<Attribute> bookAttr = book.attributes(); for (Attribute attr : bookAttr) { System.out.println("属性名:" + attr.getName() + "--属性值:" + attr.getValue()); } Iterator itt = book.elementIterator(); while (itt.hasNext()) { Element bookChild = (Element) itt.next(); System.out.println("结点名:" + bookChild.getName() + "--结点值:" + bookChild.getStringValue()); } System.out.println("=================结束遍历某一本书================"); } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
若希望导入的jar包能随着项目的迁移而迁移,可以在src下新建一个folder(取名lib),再将jar包拷到lib中,在Build Bath中添加lib中的jar包。
0 0
- JDOM及DOM4J解析xml文件
- XML--jdom/dom4j/sax解析XML文件
- JAVA 应用 DOM4J 及 JDOM 方式解析 XML
- Java中DOM4J及JDOM 方式解析xml
- JDom,jdom解析xml文件
- 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文件
- maven 打jar 包 并将所有依赖打到jar里面
- 解析Qt自带的Style示例
- 【Android】Android Studio 使用第三方类库
- app升级,获取AppStore版本号和本地版本号
- Ignatius and the Princess III(母函数)
- JDOM及DOM4J解析xml文件
- 如何基于OpenShift进行微信公众号开发
- 8 种 NoSQL 数据库系统对比
- activity之间传递对象
- Android-ActionBar
- mysql事务和锁InnoDB
- 网上下载资源的相关文档
- Java中的值传递和引用传递
- Cocos2d提供的字体!共57种(有对照的字体图)