1.示例代码

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

2. 解析XML

2.1 逐层解析

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

2.2 XPath-推荐

2.2.1 简单不带namespace

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

2.2.2 带命名空间的复杂xml

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

2.3 复杂xml解析示例

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

4. 官方链接

5. POM

  1. <dependency>
  2. <groupId>org.dom4j</groupId>
  3. <artifactId>dom4j</artifactId>
  4. <version>2.0.1</version>
  5. </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:Iterable和Iterator

    转于:https://blog.csdn.net/whgqgq/article/details/63685066 博主:gongqi1992 iterable和iterator最基本的区别: iter ...

  2. mysqladmin命令用法

    mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... option 选项: -c  numbe ...

  3. Go和HTTPS

    转自:http://tonybai.com/2015/04/30/go-and-https/ 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验.之前只是粗浅接触 ...

  4. JVM类加载(4)—加载器

    定义: 虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类.实现这个动作的代码模块称之为“类加载器 ...

  5. Windows部署jenkins服务器

    本次使用的操作系统: windows server 2012 r2vs版本: vs 2015jenkins: 2.19.4 一.下载jenkins http://mirror.xmission.com ...

  6. javascript如何判断手机是什么系统

    做H5页面的时候,经常会用到判断手机是什么系统,根据系统的型号,实现不同的效果,那么如何判断显示页面的手机型号呢? (function(){ var isMobile={ Android:functi ...

  7. jprofiler9.1.1 安装与配置

    一.安装部分 安装包: 1.jprofiler_linux_9_1_1.rpm 2.jprofiler_windows-x64_9_1_1.exe 需要注意的是,Linux 和 Windows 安装的 ...

  8. python远程登录Paramiko模块的安装

    最近做云平台的项目,需要使用python来管理所有的主机,我选择了paramiko.它跨平台的,linux和window都可以使用,pssh只支持linux. 1:安装gcc和python-devel ...

  9. 1.1 xss原理分析与剖析(2)

    0×01 反射型XSS: 反射XSS是XSS分类中最多的,他们原理是下面这样: Hacker——发现存在反射XSS的URL——根据输出点的环境构造XSS代码——进行编码.缩短(可有可无,是为了增加迷惑 ...

  10. 关于vs2012解决方案中项目DLL文件引用问题

    今天用vs2012建了项目框架,老是出现说解决方案中的项目dll文件不存在,但是我按照路径去找是可以找到这个文件的,也就是说这个文件存在的.我按照引用顺序单个编译每个项目都是成功的,就是当我编译整个解 ...