dom4j解析xml,xml数据替换,生成新的xml
Posted 小蜗牛爱远行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dom4j解析xml,xml数据替换,生成新的xml相关的知识,希望对你有一定的参考价值。
-
记录一次使用dom4j处理xml
-
dom4解析xml:
-
java项目pom文件中引入插件
-
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
-
-
示例xml:
-
<?xml version="1.0"?> <license> <catalog catalogId="d2434f9aff6a43fa9" catalogName="test" templateId="257d191dca684ee8968a" templateName="test" version="2014V2.0"/> <surface> <item alias="issueUnitname" catetype="0" name="test1" require="1" value="孝感市自然资源和规划局"/> <item alias="licenseNumber" catetype="0" name="test2" require="1" value=""/> <item alias="issueDate" catetype="0" name="test3" require="1" value=""/> <item alias="validTimeBegin" catetype="0" name="test4" require="1" value=""/> </surface> <items> <item alias="item_Code" name="test5" value=""/> <item alias="project_No" name="test6" value=""/> </items> </license>
-
-
解析替换xml属性值的代码:
-
import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter public String modifyXml(String xml, Map<String, Object> titleValueMap) //最终输出修改后的xml字符串数据 String saveXml = ""; Document doc = null; try // 将字符串转为XML doc = DocumentHelper.parseText(xml); // 获取根节点 Element rootElt = doc.getRootElement(); //获取根节点下的子节点body Iterator<Element> surface = rootElt.elementIterator("surface"); // 遍历body节点 while (surface.hasNext()) Element nextNodes = surface.next(); List<Element> items = nextNodes.content(); if (items.size() > 0) for (Element item : items) String title = item.attributeValue("name"); if (titleValueMap.containsKey(title)) item.addAttribute("value", titleValueMap.get(title).toString()); catch (Exception e) log.error("解析XML报错:", e); e.printStackTrace(); try(ByteArrayOutputStream os = new ByteArrayOutputStream()) OutputFormat format = new OutputFormat("", true, "UTF-8"); XMLWriter writer = new XMLWriter(os, format); writer.write(doc); saveXml = os.toString(); catch (IOException e) log.error("XML转字符串报错:", e); e.printStackTrace(); return saveXml;
-
-
-
dom4j常用接口:
-
Attribute 定义了 XML 的属性。 Branch 指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为 CDATA 定义了 XML CDATA 区域 CharacterData 是一个标识接口,标识基于字符的节点。如CDATA,Comment, Text. Comment 定义了 XML 注释的行为 Document 定义了XML 文档 DocumentType 定义 XML DOCTYPE 声明 Element 定义XML 元素 ElementHandler 定义了Element 对象的处理器 ElementPath 被 ElementHandler 使用,用于取得当前正在处理的路径层次信息 Entity 定义 XML entity Node 为dom4j中所有的XML节点定义了多态行为 NodeFilter 定义了在dom4j 节点中产生的一个滤镜或谓词的行为(predicate) ProcessingInstruction 定义 XML 处理指令 Text 定义 XML 文本节点 Visitor 用于实现 Visitor模式 XPath 在分析一个字符串后会提供一个 XPath 表达式
-
以上是关于dom4j解析xml,xml数据替换,生成新的xml的主要内容,如果未能解决你的问题,请参考以下文章