1.示例代码

 Document document = DocumentHelper.createDocument();
// 增加命名空间
Namespace sopa12 = Namespace.get("soap12", "http://www.w3.org/2003/05/soap-envelope"); // 添加带命名空间的节点
Element eleSoap12 = document.addElement(new QName("Envelope", sopa12))
.addAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema")
.addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); eleSoap12.addElement(new QName("Body", sopa12)).addElement("GetGeoIP", "http://www.webservicex.net/")
.addElement("IPAddress").addText("180.102.21.198"); //节点添加xmlns属性
addElement("GetGeoIP", "http://www.webservicex.net/") // dom转xml string
String requestContent = document.asXML();
//生成的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap12:Body>
<GetGeoIP xmlns="http://www.webservicex.net/">
<IPAddress>180.102.21.198</IPAddress>
</GetGeoIP>
</soap12:Body>
</soap12:Envelope>

2. 解析XML

2.1 逐层解析

//string 转 dom, 字符串转xml
Document document = DocumentHelper.parseText(text); //读取xml文件
SAXReader reader = new SAXReader();
Document document = reader.read(new File("d:/skills.xml"));
//根节点
Element root = document.getRootElement();
//子节点,elements
Element skill = root.element("skill");
//获取属性
Attribute attr1 = skill.attribute("name");
//节点内容值
node.getTextTrim()

2.2 XPath-推荐

2.2.1 简单不带namespace

    List<Node> list = document.selectNodes("//foo/bar");	//获取多个节点
Node node = document.selectSingleNode("//foo/bar/author"); //后去单个节点 第一种形式 /AAA/DDD/BBB: 表示一层一层的,AAA下面 DDD下面的BBB
第二种形式 //BBB: 表示和这个名称相同,表示只要名称是BBB,都得到
第三种形式 /*: 所有元素
第四种形式 BBB[1]: 表示第一个BBB元素
    BBB[last()]:表示最后一个BBB元素
第五种形式 //BBB[@id]: 表示只要BBB元素上面有id属性,都得到
第六种形式 //BBB[@id='b1'] 表示元素名称是BBB,在BBB上面有id属性,并且id的属性值是b1

2.2.2 带命名空间的复杂xml

List<Node> nodeStatus = document.selectNodes("//*[local-name()='status']");
text += "status: " + nodeStatus.get(0).getText() + "\n";

2.3 复杂xml解析示例

SAXReader reader = new SAXReader();
Document document = reader.read(new File("C:/Users/z00316474/Desktop/s.xml")); // 获取status值
Node nodeStatus = document.selectSingleNode("//*[local-name()='status']");
System.out.println("status: " + nodeStatus.getText()); // 获取keyId-第一种方法
Node nodekeyId1 = document.selectSingleNode("//*[local-name()='keyId']");
System.out.println("keyId1: " + nodekeyId1.getText()); // 获取keyId-第二种方法
Node nodekeyId2 = document.selectSingleNode("//*[namespace-uri()='drm:MultiDrmCommon/v1/schemas']");
System.out.println("keyId2: " + nodekeyId2.getText());
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetKeyAndSignalizationResponse xmlns="drm:KeyAndSignalization/v1/schemas" xmlns:ns2="drm:MultiDrmCommon/v1/schemas">
<status>OK</status>
<contentKey>
<ns2:keyId>acb3a0fa-1484-4870-bc10-0c052957772b</ns2:keyId>
<ns2:key>aE3kbqlTKRP2HwqlZS+jBA==</ns2:key>
</contentKey>
<drmSignalization>
<ns2:hls>
<ns2:drmSystemId>adb41c24-2dbf-4a6d-958b-4457c0d27b95</ns2:drmSystemId>
<ns2:drmName>PRM</ns2:drmName>
<ns2:keyUri>http://www.nagra.com/key=31&amp;prm=eyJjb250ZW50SWQiOiIzMSIsImtleUlkIjoiYWNiM2EwZmEtMTQ4NC00ODcwLWJjMTAtMGMwNTI5NTc3NzJiIn0</ns2:keyUri>
</ns2:hls>
</drmSignalization>
</GetKeyAndSignalizationResponse>
</soap:Body>
</soap:Envelope>

4. 官方链接

5. POM

<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.1</version>
</dependency>

Dom4j-读写xml的更多相关文章

  1. Dom4j下载及使用Dom4j读写XML简介

    sitinspring(如坐春风)原创,转载请注明作者及出处. 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4 ...

  2. Dom4j下载及使用Dom4j读写XML简介(转)

    Dom4j下载及使用Dom4j读写XML简介 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:ht ...

  3. dom4j读写XML文档

    dom4j 最常用最简单的用法(转) 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http:/ ...

  4. dom4j读写XML文件

    XML文件格式: <?xml version="1.0" encoding="UTF-8"?> <company> <employ ...

  5. 【网络爬虫】【java】微博爬虫(四):数据处理——jsoup工具解析html、dom4j读写xml

    之前提到过,对于简单的网页结构解析,可以直接通过观察法.手工写正则解析,可以做出来,比如网易微博.但是对于结构稍微复杂点的,比如新浪微博,如果还用正则,用眼睛一个个去找,未免太麻烦了. 本文介绍两个工 ...

  6. Dom4J读写xml

    解析读取XML public static void main(String[] args) { //1获取SaxReader对象 SAXReader reader=new SAXReader(); ...

  7. Java实现——Dom4j读写XML文件

    1. dom4j概述 解析DOM4J是一个开源XML解析包,采用了Java集合框架并完全支持DOM,SAX和JAXP. 最大的特色是使用了大量的接口,主要接口都在org.dom4j里定义. 2. do ...

  8. java dom4j 读写XML

    <?xml version="1.0" encoding="UTF-8"?> <Configuration> <Config id ...

  9. 利用dom4j读写XML

    public static HashMap<String, String> ReadConfig() { HashMap<String, String> map=new Has ...

  10. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

随机推荐

  1. Python selenium 三种等待方法

    1. 强制等待 sleep(xx) 是最简单粗暴的一种办法,不管你浏览器是否加载完了,程序都得等待3秒,3秒一到,继续执行下面的代码,作为调试很有用,不建议总用这种等待方式,严重影响程序执行速度. 代 ...

  2. bzoj2118

    最短路 很早以前做的了 数据范围太大,不能直接算 mn=min(a[i]) 算出d[i]表示sum%mn=i最小能构成的数,这个用最短路就行了,然后计算d[i],d[i]+mn的个数统计答案 #inc ...

  3. 关于Android进程的启动和消亡

    在打开一个应用程序的时候,packagemanager会根据manifest文件去查找有没有相应的进程已启动,若果没有启动,那么就启动一个新的进程 进程退出有两种方式,用finish结束主activi ...

  4. 报错:org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query

    service实现类上没有加@transaction 事务注解

  5. 2、Tophat align_summary.txt and samtools flagstat accepted_hits.bam disagree

    ###https://www.biostars.org/p/195758/ Left reads: Input : 49801387 Mapped : 46258301 (92.9% of input ...

  6. 卡特兰数&错排&一个一直记不住的公式

    卡特兰数 公式:f(x)=f(2)*f(x-1)+f(3)*f(x-2)+......+f(x-1)*f(2) #include<iostream>#include<cstdlib& ...

  7. 1.从GUI到MVC

    GUI(graphic user interface 用户图形界面).GUI编程的目的是提供交互性,并根据用户的操作实时的更新界面.用户的操作是不可预知的鼠标和键盘事件,我们如何保持同步和更新?在上层 ...

  8. 计算像素亮度(Pixel Light)

    RGB有亮度吗?常用公式: Y(亮度)=(0.299*R)+(0.587*G)+(0.114*B)

  9. C# 中介者模式

    中介者模式 中介者模式,定义了一个中介对象来封装一系列对象之间的交互关系.中介者使各个对象之间不需要显式地相互引用,从而使耦合性降低,而且可以独立地改变它们之间的交互行为. 结构: 中介者模式设计两个 ...

  10. 51nod1035(循环节)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1035 题意:中文题诶- 思路:求满足 10^k=1(mod ...