JDom 和 Dom4J两种对xml文件的解析和创建方法的比较
(虽然也有jaxp机制,但是考虑到此机制过于繁琐,尤其是在取值的时候,在
这里就不于讨论了了)
这两种方式在处理之前都需要引入jar包
首先是解析文件:
1.得到Document对象的方式
JDom方式:用jar包中的SAXBuilder对象的builder方法得到
SAXBuilder saxb = new SAXBuilder() Document d =
saxb.builder(new File("路径"))
Dom4J方式:用jar包中的SAXReader对象的read方法得到
SAXReader sr = new SAXReader(); Document d = sr.read(new File("路径
"))
2.得到根节点的方式
这两种机制都采用了同一种方法来得到根节点
Element root = d.getRootElement();返回的是一个Element元素
3.得到孩子结点的方式
JDom方式:root.getChildren("节点名字")返回的是一个普通的list
类型
Dom4J方式:root.elementIterator("节点名字")返回的直接是一个
集合的迭代器 Iterator
4.得到属性值
JDom方式:元素节点的getAttributeValue("属性名字")
Dom4J方式:元素节点的attributeValue("属性名字")
5.得到文本内容的方式
JDom方式:元素节点的getChildText("节点名字")***或者可以拆分
为 元素节点.getChild().getValue()
Dom4J方式:元素节点的elementText("节点名字")***或者可以拆分
为 元素节点.element().getText("节点名字")
创建xml文件(解析的逆过程)
1.得到Document的方式:
JDom方式:直接new Docuemnt()***捣包
Dom4J方式:DocumentHelper.createDocument()**通过直接调
用DocuemntHelper对象里面的静态方法createDocuemnt()来得到
2.创建节点的方式
JDom方式:也是直接new出各种节点Element student = new
Element("学生");
Dom4J方式:在创建出各个节点的同时也指定了关联关系Element
student = root.addElement("学生") Element name =
student.addElement("姓名")...
3.指定属性或者内容文本
都是通过setText()方式来给元素赋值;属性的赋值方法JDom方式是
通过setAttrubute(“key”,“value”),Dom4j是通过setAttributevalue(
“key”,“value”)
4.给各个元素节点指定继承关系
JDom方式: d.addContent(root); root.addContent(student);
student.addContent(name)...
由于Dom4J在建立节点的时候已经指定了继承关系,所以此处不用制
定了
5.导出xml文件
Jdom方式:使用是XMLOutputter对象(直接new出来的),并调用该对象
的output(document,outputStream)方法,两个参数,其中的outputStream参
数一般是用FileOutputStream("文件路径");
Dom4J方式:使用的是XMLWriter 对象(也是直接new出来的),构造方
法中用到了文件输出流,直接指定输出位置 XMLWriter xmlw = new
XMLWriter(new FileOutputStream("文件路径")),最后调
用xmlw.write(document)方法来输出
6.输出文件格式的指定
Jdom方式 使用的是引入jar包中的Format对象来实现的,
Format f = Format.getPrettyFormat(); f.setEncoding("GBK");
f.setIndent(" ")***指定的是缩进格式,最后加载格式
xmlw.setFormat(f)
dom4J方式:
OutputFormat format = OutputFormat.createPrettyPrint();//缩减型格式
OutputFormat format=OutputFormat.createCompactFormat();//紧凑型格式
在new XMLWriter的时候指定格式
XMLWriter xmlw = new XMLWriter(format);
****最后都别忘记流的关闭
2009-10-25*中软301java就业班
(虽然也有jaxp机制,但是考虑到此机制过于繁琐,尤其是在取值的时候,在
这里就不于讨论了了)
这两种方式在处理之前都需要引入jar包
首先是解析文件:
1.得到Document对象的方式
JDom方式:用jar包中的SAXBuilder对象的builder方法得到
SAXBuilder saxb = new SAXBuilder() Document d =
saxb.builder(new File("路径"))
Dom4J方式:用jar包中的SAXReader对象的read方法得到
SAXReader sr = new SAXReader(); Document d = sr.read(new File("路径
"))
2.得到根节点的方式
这两种机制都采用了同一种方法来得到根节点
Element root = d.getRootElement();返回的是一个Element元素
3.得到孩子结点的方式
JDom方式:root.getChildren("节点名字")返回的是一个普通的list
类型
Dom4J方式:root.elementIterator("节点名字")返回的直接是一个
集合的迭代器 Iterator
4.得到属性值
JDom方式:元素节点的getAttributeValue("属性名字")
Dom4J方式:元素节点的attributeValue("属性名字")
5.得到文本内容的方式
JDom方式:元素节点的getChildText("节点名字")***或者可以拆分
为 元素节点.getChild().getValue()
Dom4J方式:元素节点的elementText("节点名字")***或者可以拆分
为 元素节点.element().getText("节点名字")
创建xml文件(解析的逆过程)
1.得到Document的方式:
JDom方式:直接new Docuemnt()***捣包
Dom4J方式:DocumentHelper.createDocument()**通过直接调
用DocuemntHelper对象里面的静态方法createDocuemnt()来得到
2.创建节点的方式
JDom方式:也是直接new出各种节点Element student = new
Element("学生");
Dom4J方式:在创建出各个节点的同时也指定了关联关系Element
student = root.addElement("学生") Element name =
student.addElement("姓名")...
3.指定属性或者内容文本
都是通过setText()方式来给元素赋值;属性的赋值方法JDom方式是
通过setAttrubute(“key”,“value”),Dom4j是通过setAttributevalue(
“key”,“value”)
4.给各个元素节点指定继承关系
JDom方式: d.addContent(root); root.addContent(student);
student.addContent(name)...
由于Dom4J在建立节点的时候已经指定了继承关系,所以此处不用制
定了
5.导出xml文件
Jdom方式:使用是XMLOutputter对象(直接new出来的),并调用该对象
的output(document,outputStream)方法,两个参数,其中的outputStream参
数一般是用FileOutputStream("文件路径");
Dom4J方式:使用的是XMLWriter 对象(也是直接new出来的),构造方
法中用到了文件输出流,直接指定输出位置 XMLWriter xmlw = new
XMLWriter(new FileOutputStream("文件路径")),最后调
用xmlw.write(document)方法来输出
6.输出文件格式的指定
Jdom方式 使用的是引入jar包中的Format对象来实现的,
Format f = Format.getPrettyFormat(); f.setEncoding("GBK");
f.setIndent(" ")***指定的是缩进格式,最后加载格式
xmlw.setFormat(f)
dom4J方式:
OutputFormat format = OutputFormat.createPrettyPrint();//缩减型格式
OutputFormat format=OutputFormat.createCompactFormat();//紧凑型格式
在new XMLWriter的时候指定格式
XMLWriter xmlw = new XMLWriter(format);
****最后都别忘记流的关闭
2009-10-25*中软301java就业班