XML--Java中的四种常见解析方式--jdom与dom4j
来源:互联网 发布:软件服务外包方案 编辑:程序博客网 时间:2024/05/01 02:34
jdom主要构建方法
SAXBuilder sax=new SAXBuilder();
方法一: InputStream in=new FileInputStream("rec\\books.xml");
Document document=sax.build(in);
方法二: Document document=sax.build("rec\\books.xml");
直接使用Element类获取节点 List接收集合
Element rootElement=document.getRootElement();
List<Element> booklist=rootElement.getChildren();
List<Attribute> attrlist=booktemp.getAttributes()
List<Element> childs=booktemp.getChildren();
PS:乱码不改xml文件编码类型是可用inputStreamReader包装 FileInputStream更改读取的编码方式,再将reader传入sax.bulid
public class Jdomtest {private static List<book> bookslist=new ArrayList<book>(); public static void main(String[] args) { SAXBuilder sax=new SAXBuilder(); InputStream in; try {// in=new FileInputStream("rec\\books.xml");// Document document=sax.build(in); Document document=sax.build("rec\\books.xml"); Element rootElement=document.getRootElement(); List<Element> booklist=rootElement.getChildren(); for (Element booktemp : booklist) { book bookbuf=new book(); List<Attribute> attrlist=booktemp.getAttributes(); System.out.println("解析第"+(booklist.indexOf(booktemp)+1)+"本书"); for(Attribute attr:attrlist){ System.out.println("解析书本的第"+(attrlist.indexOf(attr)+1)+"个属性"); System.out.println(attr.getName()+":"+attr.getValue()); if(attr.getName().equals("id")) bookbuf.id=attr.getValue(); } List<Element> childs=booktemp.getChildren(); for(Element child:childs){ System.out.println(childs.indexOf(child)+1+":"+child.getName()+"----"+child.getValue()); if(child.getName().equals("name")) bookbuf.name=child.getValue(); if(child.getName().equals("years")) bookbuf.years=child.getValue(); if(child.getName().equals("price")) bookbuf.price=child.getValue(); } bookslist.add(bookbuf); System.out.println("第"+(booklist.indexOf(booktemp)+1)+"本书解析完毕"+"成功添加了"+bookbuf.name); bookbuf=null; } for (book bookq : bookslist) { System.out.println("书名:"+bookq.name); System.out.println("出版年份:"+bookq.years); System.out.println("价格:"+bookq.price); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // TODO Auto-generated method stub catch (JDOMException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
dom4j主要构建方法
SAXReader reader = new SAXReader();
Document document = reader.read(new File("rec/books.xml"));
其大致方法与jdom无异。
其获取子节点的方式常通过elementIterator实现得到一个Iterator
Iterator<Element> it = bookstore.elementIterator();
子节点根据不同类型有getStringValue();getIntValue()等
public class Jdom4jtest {private static ArrayList<book> booklist=new ArrayList<book>(); public static void main(String[] args) { // TODO Auto-generated method stub SAXReader reader = new SAXReader(); try { Document document = reader.read(new File("rec/books.xml")); Element bookstore = document.getRootElement(); Iterator<Element> it = bookstore.elementIterator(); while (it.hasNext()) { book tempbook =new book(); Element elementbook = it.next(); List<Attribute> attributes = elementbook.attributes(); System.out.println("开始遍历属性"); for (Attribute attr : attributes) { System.out.println("第" + attributes.indexOf(attr) + 1 + "个属性" + attr.getName() + ":" + attr.getStringValue()); tempbook.id=attr.getStringValue(); } Iterator<Element> itchild = elementbook.elementIterator(); while (itchild.hasNext()) { Element bookchild = itchild.next(); System.out.println(bookchild.getName() + "---" + bookchild.getStringValue()); if(bookchild.getName().equals("name")) tempbook.name=bookchild.getStringValue(); if(bookchild.getName().equals("years")) tempbook.years=bookchild.getStringValue(); if(bookchild.getName().equals("price")) tempbook.price=bookchild.getStringValue(); } booklist.add(tempbook); tempbook=null; } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } printbook(); }public static void printbook(){ for (book booktemp : booklist) { System.out.println(booktemp.id+":"+booktemp.name); System.out.println("年份---"+booktemp.years); System.out.println("价格---"+booktemp.price); } }}
- XML--Java中的四种常见解析方式--jdom与dom4j
- XML的四种解析方式之JDOM&DOM4J
- DOM,SAX,JDOM,DOM4J 四种方式解析xml
- DOM,SAX,JDOM,DOM4J 四种方式解析xml
- 解析xml的四种方式:DOM JDOM DOM4J SAX
- Java解析xml——DOM、SAX、JDOM和DOM4J四种方式的汇总与比较
- java 解析xml的四种方式:sax,dom,dom4j,jdom
- JAVA 解析XML之JDOM、DOM4J方式
- Java四种方式操作 xml,DOM|SAX|JDOM|DOM4J
- Java四种方式操作 xml,DOM|SAX|JDOM|DOM4J
- JAVA四种方式访问XML(DOM,SAX,JDOM,DOM4J)
- java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解
- java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解
- Java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解
- java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解
- java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解
- [Java] 四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较
- java操作(DOM、SAX、JDOM、DOM4J)xml方式的四种比较与详解
- IO---Java 不同读写方式的IO性能
- JVM系列三:JVM参数设置、分析
- Maven生命周期与构建管理
- XML--Java中的四种常见解析方式--dom
- 深入理解Java虚拟机笔记
- XML--Java中的四种常见解析方式--jdom与dom4j
- XML--Java中的四种常见解析的区别
- matplotlib绘图进行数据分析
- 自己实现简单对象关系库之缓存类SQLField,SQLClass,SQLCache
- 如何判断两个jq对象是同一个对象
- SpringBoot全局异常处理
- XMLHTTP中setRequestHeader参数问题
- C++中文件的写入与写出
- vrf路由泄露原理和简单示例