(五)DOM4j进行XML文件的解析及生成
DOM4j本身还是需要使用SAX建立解析器,然后通过文档依次找到根节点,再通过根节点查找每一个节点的内容.
1.写操作
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public static void main(String[] args) {
// 1.创建文档
Document doc = DocumentHelper.createDocument();
// 2.定义节点及子节点
Element addresslist = doc.addElement("addresslist");
Element linkman = addresslist.addElement("linkman");
// 定义子节点
Element name = linkman.addElement("name");
Element email = linkman.addElement("email");
// 3.设置节点内容
name.setText("祖国");
email.setText("mxzer3200@126.com");
// 4.设置输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); // 设置输出编码
// 输出xml
try {
XMLWriter writer = new XMLWriter(new FileOutputStream(new File("e:"+ File.separator + "dom4j2.xml")), format);
writer.write(doc);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
生成的xml文件已格式排列的:
2.读操作
/**
* 读操作
* 使用SAX建立解析器,然后通过文档依次找到根节点,然后通过根节点找到每一个节点的内容。
*/
public static void main(String[] args) {
// 1.读取文件
File file = new File("e:" + File.separator + "dom4j2.xml");
// 2.建立SAX解析读取
SAXReader reader = new SAXReader();
// 3.读取文档
Document doc = null;
try {
doc = reader.read(file);
} catch (DocumentException e) {
e.printStackTrace();
}
// 4.获取根元素
Element root = doc.getRootElement();
// System.out.println(root.getName());
Iterator it = root.elementIterator(); // 获取全部子节点
while (it.hasNext()) {
Element linkman = (Element) it.next();
System.out.println("姓名:" + linkman.elementText("name"));
System.out.println("邮箱:" + linkman.elementText("email"));
}
}
3.解析xml方式2
<?xml version="1.0" encoding="UTF-8"?>
<Response service="ConfirmService">
<Head>ERR</Head>
<ERROR code="4001">系统发生数据错误或运行时异常</ERROR>
</Response>
String xml = "<?xml version=\'1.0\' encoding=\'UTF-8\'?><Response service=\"ConfirmService\"><Head>ERR</Head><ERROR code=\"4001\">系统发生数据错误或运行时异常</ERROR></Response>";
System.out.println(xml);
Map<String, String> map = parseXml(xml);
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
System.out.println(entry.getKey() + ": " + entry.getValue());
}
/**
* 解析XML
* @param parseXml
* @return
*/
private static Map<String, String> parseXml(String parseXml) {
Map<String, String> map = new HashMap<String, String>();
String resultHeader = "";
String errorCode = "";
String errorDetail = "";
try {
// Parse Xml
Document document = DocumentHelper.parseText(parseXml);
// Parse Header
List<Element> list = document.selectNodes("//" + "Head");
if (list != null && list.size() > 0) {
Element e = list.get(0);
List<Element> els = e.elements();
if (els.size() == 0) {
resultHeader = e.getText().trim();
}
}
// Parse Error
list = document.selectNodes("//" + "ERROR");
if (list != null && list.size() > 0) {
Element e = list.get(0);
List<Element> els = e.elements();
if (els.size() == 0) {
errorCode = e.attributeValue("code");
errorDetail = e.getTextTrim();
}
}
} catch (Exception e) {
resultHeader = "ERR";
errorCode = "9999";
errorDetail = "XML解析错误:" + e.getMessage();
}
// Set Map
map.put("header", resultHeader);
map.put("errCode", errorCode);
map.put("errDetail", errorDetail);
return map;
}
转载于:https://www.cnblogs.com/mxzer/p/6423066.html
(五)DOM4j进行XML文件的解析及生成相关推荐
- (二)使用Dom4j对XML文件进行解析
目录 1.XML解析概念 2.Dom4j解析过程 1.XML解析概念 XML解析技术: HTML和XML都是标记型文档,可以使用W3C组织制定的DOM技术来解析.(DOM把所有标签表示为对象) d ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- Java自定义生成与解析(Dom4J)XML文件
XML(Extensible Markup Language):可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 应用:XML 应用于 web 开发的许多方面, ...
- dom4j读写xml文件
dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator ...
- DOM4j读取XML文件(SAXReader)
为什么80%的码农都做不了架构师?>>> DOM4j读取XML文件(SAXReader) 一.一个很好的SAXReader读写xml文件的例题: 总结: Document do ...
- IOS开发基础之使用AFNetworking框架实现xml文件的解析
IOS开发基础之使用AFNetworking框架实现xml文件的解析 info.plist加入这行代码 <key>NSAppTransportSecurity</key> &l ...
- dom4j读取XML文件内容
转载自 dom4j读取XML文件内容 <?xml version="1.0" encoding="UTF-8"?> <RESULT> ...
- Dom4j工具--XML的DOM解析(下)--写操作
前言: 上一篇博客我开始了用Dom4j对XML进行了读操作,这篇博客主要是进行对XML的写操作 只涉及基础的内容,只要有javase基础和eclipse的使用 就可以完成, 往后的内容包括 " ...
最新文章
- 6.6 二分 K-Means 算法-机器学习笔记-斯坦福吴恩达教授
- linux防火墙 限制端口,Linux开启防火墙并限制开放端口
- 云视睿博流媒体服务器Lit,《云视睿博流媒体服务器参数表.docx
- mac VMware Fusion 虚拟机键盘可以使用,鼠标无法使用排查思路及解决方法
- Java错别字检查_java中关于异常的处理
- JDK 12,合并的收集器和命名的挑战
- 两天,我把分布式事务搞完了
- 什么是数据库触发器?
- mid制作乐谱_乐谱编辑(在线简谱制作软件)
- 信息资源管理——基础
- 电商商品中心类目体系
- 计算机课英语怎么读音标,【英语课堂】48个国际音标表及发音详解图
- proteus 中89c51芯片如何显示vcc和gnd
- asp毕业设计——基于asp+access的学生论坛设计与实现(毕业论文+程序源码)——学生论坛
- linux 跨网段ping,Linux中跨网段ping问题
- 在上海奋斗的五年---从月薪3500到700万 (一个西北真汉子的人生)
- MFC学习篇:鸡啄米MFC教程字体格式设置函数解析
- 叶俊获“约翰·格雷博士中国行”最佳贡献奖
- 数学建模常用算法—灰色预测
- 手把手教你如何用Python从PDF文件中导出数据(附链接)
热门文章
- Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
- 机器学习-cs229-线性回归-梯度下降法
- 设计模式--程序猿必备面向对象设计原则
- C语言非常重要的细节(知道一点更新一点)
- understand软件使用教程
- 【个人网盘-updog】使用updog建立个人网盘,so easy
- python3(十一)内置模块和类型转换
- 信号处理深度学习机器学习_机器学习和信号处理如何融合?
- 网卡驱动:stmmac DMA发送流程
- PHP(四)——性能优化