博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xml及dom4j解析
阅读量:2339 次
发布时间:2019-05-10

本文共 1946 字,大约阅读时间需要 6 分钟。

xml格式:

1、语法规范:
1)、必须有xml文档声明:

: xml文档声明结束

2)、必须有且仅有一个跟一个根元素

3)、严格区分大小写
4)、属性值用引号(双引号或单引号):等号分开的 名称-值对;在一个元素上,相同的属性只能出现一次
5)、标记成对;
6)、空标记关闭
7)、元素正确嵌套
注:注意文本文件保存时候的默认编码格式是ANSI,需用记事本把它手动把它改成utf-8保存。

2、元素命名规则

1)、名称中可以包含字母、数字或者其他可见字符
2)、名称不能以数字开头
3)、不能以XML/xml/Xml…开头
4)、名称中不能包含空格。
5)、名称中不能包含冒号(注:冒号留给命名空间使用)

3、实体

实体叫ENTITY,实体的作用是避免重复输入。作用相当于宏或者变量。
1)、内置的5种实体

实体				符号<			<>			>&			&"			"'			'

2)、自定义实体

]>

4、文档类型声明

文档类型定义–DOCTYPE,文档类型声明,紧跟在xml声明后面,包含所有的实体声明

5、CDATA

用于把整段文本解释为纯字符数据而不是标记的情况。如包含大量的<、>、&或者"字符。
CDATA节中的所有字符都会被当做元素字符数据的常量部分,而不是xml标记,可以输入
除]]>外任意字符,不能嵌套。

6、PCDATA

PCDATA的意思是被解析的字符数据(parsed character data)。
可把字符数据想象为xml元素的开始标签与结束标签之间的文本。

·XML解析

基本的解析方式有两种:一种叫SAX,另一种叫DOM。

SAX(Simple API for XML)是基于事件流的解析,DOM(document Object Model)是基于XML文档树结构的解析。
SAX:效率高,数据量小,仅一次获取
DOM:整棵树记载到内存中,耗内存,可多次获取

·Dom4J解析XML文档

1、得到要解析的文件对象

2、得到解析器
3、通过解析器将文件对象转换成Document对象
4、得到当前文档对象的根节点
5、得到根节点的所有子节点,返回迭代器
6、遍历,得到每一个子节点的名称和值

·Dom4jReader

//1、得到要解析的文件对象File file = new File("src/test.xml");//2、得到解析器SAXReader reader = new SAXReader();//3、通过解析器将文件对象转换成Document对象Document document = reader.read(file);//4、得到当前文档对象的根节点Element root = document.getRootElement();//5、得到根节点的所有子节点,返回迭代器Iterator
iterator = root.elementIterator();//6、遍历,得到每一个子节点的名称和值while(iterator.hasNext()){ Element el = iterator.next(); System.out.println(el.getName()); System.out.println(el.getText());}

·Dom4jWriter

使用DocumentHelper来创建 Document对象Document document = DocumentHelper.createDocument();// 创建元素并设置关系Element person = document.addElement("person");Element name = person.addElement("name");Element age = person.addElement("age");// 设置文本name.setText("shsxt");age.setText("10");// 创建格式化输出器OutputFormat of = OutputFormat.createPrettyPrint();of.setEncoding("utf-8");// 输出到文件File file = new File("src/outputdom4j.xml");XMLWriter writer = new XMLWriter(new FileOutputStream(new File(file.getAbsolutePath())),of);// 写出writer.write(document);writer.flush();writer.close();

转载地址:http://pfgpb.baihongyu.com/

你可能感兴趣的文章
Python基础教程学习:遇到需要的登录的网站怎么办?学好python,用这3招轻松搞定
查看>>
Python基础学习教程:觉得 Python 太“简单了”,这些题你又能答对几个?
查看>>
Python学习教程:程序员的技能树,决定了一生职业的高度
查看>>
“我自学Python学习教程,如何拿下了月薪15k的工作”
查看>>
聊个天对方老是撤回消息,学完这三步Python学习教程,撤回100条我也能看到!
查看>>
Python基础学习教程:Python玩转PDF各种骚操作大全
查看>>
发展最快的编程语言:Python的前景
查看>>
Python学习教程:Python这些位运算的妙用,绝对让你大开眼界
查看>>
Python面试经验总结,面试一时爽,一直面试一直爽!
查看>>
Python爬虫学习:听说你好不容易写了个爬虫,结果没抓几个就被封了?
查看>>
Python基础教程学习:听说你在学Python?来点PEP吧
查看>>
Python基础学习教程:我有故事你有酒吗?除了敲代码,程序员(媛)还能有什么副业?
查看>>
python爬虫教程:爬虫时如何知道是否代理ip伪装成功
查看>>
Python入门学习:又改需求了?可是程序写了一半了,不妨先捋捋我们的定位问题
查看>>
Python面试题目通关指南及独家建议,确定不瞅瞅?
查看>>
爬虫界又出神器|一款比selenium更高效的利器
查看>>
爬虫大家最关心的16个问题,7分钟的Python爬虫解疑大全教入门
查看>>
Python3-定时任务的四种实现方式
查看>>
Python3-定时任务的四种实现方式
查看>>
Python学习教程:用Python帮你打码,哪里无码打哪里
查看>>