首页 > 其他分享 >使用 dom4j 解析 XML

使用 dom4j 解析 XML

时间:2023-06-11 11:04:11浏览次数:49  
标签:XML dom4j 元素 catalog 文档 解析 addElement


http://www.ibm.com/developerworks/cn/xml/x-dom4j.html

创建文档

本节讨论使用 dom4j API 创建 XML 文档的过程,并创建示例 XML 文档 catalog.xml。

使用 import 语句导入 dom4j API 类:

1. import org.dom4j.Document;  
2. import org.dom4j.DocumentHelper;  
3. import org.dom4j.Element;

使用 DocumentHelper 类创建一个文档实例。 DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类。

  

1. Document document = DocumentHelper.createDocument();


使用 addElement() 方法创建根元素 catalog 。 addElement() 用于向 XML 文档中增加元素。

  


1. Element catalogElement = document.addElement("catalog");

 catalog 元素中使用 addComment() 方法添加注释“An XML catalog”。

  

1. catalogElement.addComment("An XML catalog");

 catalog 元素中使用 addProcessingInstruction() 方法增加一个处理指令。

  

1. catalogElement.addProcessingInstruction("target","text");

 catalog 元素中使用 addElement() 方法增加 journal 元素。

  

1. Element journalElement =  catalogElement.addElement("journal");

 

使用 addAttribute() 方法向 journal 元素添加 title 和 publisher 属性。

 


  

1. journalElement.addAttribute("title", "XML Zone");  
2. journalElement.addAttribute("publisher", "IBM developerWorks");


  

向 article 元素中添加 journal 元素。

  

1. Element articleElement=journalElement.addElement("article");

 article 元素增加 level 和 date 属性。

  

1. articleElement.addAttribute("level", "Intermediate");  
2. articleElement.addAttribute("date", "December-2001");


 

 article 元素中增加 title 元素。

  

1. Element titleElement=articleElement.addElement("title");

 

 setText() 方法设置 article 元素的文本。

  

1. titleElement.setText("Java configuration with XML Schema");


 

在 article 元素中增加 author 元素。

  

1. Element authorElement=articleElement.addElement("author");

 

在 author 元素中增加 firstname 元素并设置该元素的文本。

1. Element  firstNameElement=authorElement.addElement("firstname");  
2. firstNameElement.setText("Marcello");

 

在 author 元素中增加 lastname 元素并设置该元素的文本。

  


使用 dom4j 解析 XML_XML

1. Element lastNameElement=authorElement.addElement("lastname");  
2. lastNameElement.setText("Vitaletti");


 

 addDocType() 方法添加文档类型说明。

1. document.addDocType("catalog", null,"file://c:/Dtds/catalog.dtd");

 

 这样就向 XML 文档中增加文档类型说明:


1. <!DOCTYPE catalog SYSTEM "file://c:/Dtds/catalog.dtd">

 

如果文档要使用文档类型定义(DTD)文档验证则必须有 Doctype。

XML 声明 <?xml version="1.0" encoding="UTF-8"?> 自动添加到 XML 文档中。

 

清单 3 所示的例子程序 XmlDom4J.java 用于创建 XML 文档 catalog.xml。


  

1. import org.dom4j.Document;  
2. import org.dom4j.DocumentHelper;  
3. import org.dom4j.Element;  
4. import org.dom4j.io.XMLWriter;  
5. import java.io.*;  
6. public class XmlDom4J{  
7. public void generateDocument(){  
8. Document document = DocumentHelper.createDocument();  
9. "catalog");  
10. "An XML Catalog");  
11. "target","text");  
12. "journal");  
13. "title", "XML Zone");  
14. "publisher", "IBM developerWorks");  
15. "article");  
16. "level", "Intermediate");  
17. "date", "December-2001");  
18. "title");  
19. "Java configuration with XML Schema");  
20. "author");  
21. "firstname");  
22. "Marcello");  
23. "lastname");  
24. "Vitaletti");  
25. "catalog",  
26. null,"file://c:/Dtds/catalog.dtd");  
27. try{  
28. new XMLWriter(  
29. new FileWriter( new File("c:/catalog/catalog.xml") ));  
30.         output.write( document );  
31.         output.close();  
32.         }  
33. catch(IOException e){System.out.println(e.getMessage());}  
34. }  
35. public static void main(String[] argv){  
36. XmlDom4J dom4j=new XmlDom4J();  
37. dom4j.generateDocument();  
38. }}


 

这一节讨论了创建 XML 文档的过程,下一节将介绍使用 dom4j API 修改这里创建的 XML 文档。


修改文档

这一节说明如何使用 dom4j API 修改示例 XML 文档 catalog.xml。

使用 SAXReader 解析 XML 文档 catalog.xml:

 

SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputXml);

SAXReader 包含在 org.dom4j.io 包中。inputXml 是从 c:/catalog/catalog.xml 创建的 java.io.File。使用 XPath 表达式从 article 元素中获得 level 节点列表。如果 level 属性值是“Intermediate”则改为“Introductory”。

标签:XML,dom4j,元素,catalog,文档,解析,addElement
From: https://blog.51cto.com/u_16104661/6457163

相关文章

  • Redis数据结构:高频面试题及解析
    概述Redis是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能......
  • v831开发日记-交叉编译之python-build解析
    python部分#!/usr/bin/envpython#-*-coding=utf-8-*-##@filefromhttps://github.com/Neutree/c_cpp_project_framework#@authorneucrack#@licenseApache2.0##这段代码使用Python语言,导入了sys和os模块。它定义了一个名为sdk_env_name的变量,其值为"LIBMAIX_......
  • Redis数据结构:高频面试题及解析
    概述Redis是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性......
  • 简单滑动窗口题目解析(c实现)
    下面的题目要使用的主要思路为滑动窗口,但是还需要使用哈希表来储存窗口中的元素个数题目一:无重复字符的最长子串题目一链接给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所......
  • 使用Mybatis框架(xml)
    结构: Pojo实体类,对应mysql表的结构 mapper,将sql映射成方法,通过demo去调用sql方法XXXmaaper.xml里面写了具体的sqllogback.xml、mybatis.xml配置信息使用mapper去代理开发要将XXXmapper.xml配置和mapper方法类放在同一目录下 XXXmapper.xml具体类的配置:<?xmlversion......
  • 教务管理系统之pom.xml
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/......
  • 解析隧道代理IP与API代理IP的区别
    隧道代理IP和API代理IP是两种常见的代理IP类型,它们在实现方式和使用场景上有一些区别。第一部分:隧道代理IP的特点和用途隧道代理IP:隧道代理IP(TunnelProxyIP)是通过在客户端和目标服务器之间建立一个隧道连接来实现代理的。具体来说,隧道代理IP会在客户端和目标服务器之间扮演中间人......
  • Handling Invalid Characters in an XML String (zz.IS2120.BG57IV3)
    Thereare5predefinedentityreferencesinXML://z2013-08-2018:03:[email protected][T191,L2147,R75,V2925]<<lessthan>>greaterthan&amp;&ampersand &apos;'apostrophe""quotationmark//z2014-04-1017:47......
  • 解析url
    //parseurl解析urlcc++代码rfc2068#include<stdio.h>#include<string.h>#include<stdlib.h>//解析url,作为示例,很多情况没考虑,比如说user,pass之类的intparse_url(char*url,char**serverstrp,int*portp,char**pathstrp){charbuf[256];......
  • 用XmlSerializer.Deserialize将XML转实体遇到的问题
    1、命名空间的问题1.1XML示例:1.2反序列化代码:点击查看源代码```publicstaticobjectDeserializeFromXml<T>(stringxmlFilePath){objectresult=null;using(FileStreamfs=newFileStream(xmlFi......