-
记录一次使用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
文章介绍了如何在Java项目中通过dom4j库解析XML文档,首先展示了pom文件中引入dom4j依赖,然后提供了一个XML示例。接着,详细展示了用dom4j解析XML并替换特定元素属性值的代码,以及涉及的关键dom4j接口如Document、Element和Attribute等。
摘要由CSDN通过智能技术生成