JAVA使用Dom4j组装、解析XML
2016-01-29 11:41
471 查看
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。
具体操作如下:
<?xml version="1.0" encoding="UTF-8"?>
<msg>
<content>
<name>xiaohua</name>
<address>china</address>
</content>
<other>
<car>
<carCode>99999</carCode>
<carNo xmlns:jsdl="http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdl"
xmlns:jsdlws="http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdlws"><![CDATA[<author>xiaoming</author>]]
></carNo>
</car>
</other>
</msg>
/**
* 组装XML
*/
public static void CreateXML(){
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("msg");
Element contentElement = rootElement.addElement("content");
Element verElement = contentElement.addElement("name");
verElement.addText("xiaohua");
Element addressElement = contentElement.addElement("address");
addressElement.addText("china");
Element otherElement = rootElement.addElement("other");
Element carElement = otherElement.addElement("car");
Element taxOrgCodeElement = carElement.addElement("carCode");
taxOrgCodeElement.addText("99999");
Element carNoElement = carElement.addElement("carNo");
carNoElement.addNamespace("jsdl", "http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdl");
carNoElement.addNamespace("jsdlws", "http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdlws");
String cdataString = "<author>xiaoming</author>";
carNoElement.addCDATA(cdataString);
//文件输出
OutputFormat outputFormat = null;
try {
String fileName = "D:\\tmp\\test.xml";
outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding("UTF-8");
XMLWriter xw = new XMLWriter(new FileOutputStream(fileName),outputFormat);
outputFormat.setNewLineAfterDeclaration(false);
xw.write(document);
xw.close();
} catch (Exception e) {
System.out.println(e);
}
}
/**
* 读取XML
*/
public static void readXML(){
try {
String filePath = "D:\\tmp\\test.xml";
SAXReader reader = new SAXReader();
Document document = reader.read(new File(filePath));
Element msgElement = document.getRootElement();
Element contentElement = msgElement.element("content");
Element varElement = contentElement.element("name");
String name = varElement.getText();
System.out.println("名字:"+name);
Element otherElement = msgElement.element("other");
Element carHeadElement = otherElement.element("car");
Element taxorgCodeElement =carHeadElement.element("carCode");
System.out.println("carCode:"+taxorgCodeElement.getText());
Element carNoElemnet = carHeadElement.element("carNo");
System.out.println("carNo:"+carNoElemnet.getText());
Element documents = (Element)document.selectNodes("msg/other/car/carNo").get(0);
String s = documents.getStringValue();
System.out.println("s:"+s);
Document documentt = DocumentHelper.parseText(s);
Node node = documentt.selectSingleNode("author");
System.out.println("CDATA重的内容:"+node.getStringValue());
} catch (Exception e) {
System.out.println(e);
}
}
具体操作如下:
<?xml version="1.0" encoding="UTF-8"?>
<msg>
<content>
<name>xiaohua</name>
<address>china</address>
</content>
<other>
<car>
<carCode>99999</carCode>
<carNo xmlns:jsdl="http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdl"
xmlns:jsdlws="http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdlws"><![CDATA[<author>xiaoming</author>]]
></carNo>
</car>
</other>
</msg>
/**
* 组装XML
*/
public static void CreateXML(){
Document document = DocumentHelper.createDocument();
Element rootElement = document.addElement("msg");
Element contentElement = rootElement.addElement("content");
Element verElement = contentElement.addElement("name");
verElement.addText("xiaohua");
Element addressElement = contentElement.addElement("address");
addressElement.addText("china");
Element otherElement = rootElement.addElement("other");
Element carElement = otherElement.addElement("car");
Element taxOrgCodeElement = carElement.addElement("carCode");
taxOrgCodeElement.addText("99999");
Element carNoElement = carElement.addElement("carNo");
carNoElement.addNamespace("jsdl", "http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdl");
carNoElement.addNamespace("jsdlws", "http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdlws");
String cdataString = "<author>xiaoming</author>";
carNoElement.addCDATA(cdataString);
//文件输出
OutputFormat outputFormat = null;
try {
String fileName = "D:\\tmp\\test.xml";
outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding("UTF-8");
XMLWriter xw = new XMLWriter(new FileOutputStream(fileName),outputFormat);
outputFormat.setNewLineAfterDeclaration(false);
xw.write(document);
xw.close();
} catch (Exception e) {
System.out.println(e);
}
}
/**
* 读取XML
*/
public static void readXML(){
try {
String filePath = "D:\\tmp\\test.xml";
SAXReader reader = new SAXReader();
Document document = reader.read(new File(filePath));
Element msgElement = document.getRootElement();
Element contentElement = msgElement.element("content");
Element varElement = contentElement.element("name");
String name = varElement.getText();
System.out.println("名字:"+name);
Element otherElement = msgElement.element("other");
Element carHeadElement = otherElement.element("car");
Element taxorgCodeElement =carHeadElement.element("carCode");
System.out.println("carCode:"+taxorgCodeElement.getText());
Element carNoElemnet = carHeadElement.element("carNo");
System.out.println("carNo:"+carNoElemnet.getText());
Element documents = (Element)document.selectNodes("msg/other/car/carNo").get(0);
String s = documents.getStringValue();
System.out.println("s:"+s);
Document documentt = DocumentHelper.parseText(s);
Node node = documentt.selectSingleNode("author");
System.out.println("CDATA重的内容:"+node.getStringValue());
} catch (Exception e) {
System.out.println(e);
}
}
相关文章推荐
- 基于Spring MVC的Web应用开发(4) - FileUpload
- web.xml之<context-param>与<init-param>的区别与作用++ springMVC
- 基于Spring MVC的Web应用开发(3) - Resources
- java的IO
- 基于Spring MVC的Web应用开发(2) - Log
- The Java™ Tutorials — Generics :Wildcards and Subtyping 泛型和子类
- 第 3 章 DOM 操作
- 基于Spring MVC的Web应用开发(1) - HelloWorld
- 【Spring】手动获取spring容器对象时,报no qualifying bean of type is defined
- Java算法求最大最小值,倒序,冒泡排序,斐波纳契数列,日历一些经典算法
- struts2思想
- Java线程3
- 理解Java对象序列化
- Java迭代器Iterator
- Struts2学习10--防止表单的重复提交token标签和tokenSession
- java.util.ConcurrentModificationException错误
- Struts2+hibernate实现用户登录和增删改查案例
- java.io.IOException: No such file or directory解决方案之权限问题
- JNI java调用c代码 (一)静态注册
- Java中List倒序输出