微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML解析基础

xml文件分为以下几个部分:(一般用来做配置文件)
1.文档声明
2.xml元素:指的就是xml文档中的标签
3.属性
4.注释
5.CDATA区,特殊字符
6.处理指令

1.文档声明:(注意,文档保存到硬盘的形式要和浏览器打开的形式相同)
//standalone:指定文档是否独立
<?xml version="1.0" encoding="utf-8" ?>

2.xml元素
指的就是xml文档标签.
标签的书写形式:
包含标签体:<a>北京</a>
不包含标签体:<a></a>,可以简写成:<a/>

对于标签内容eg:
<a>
beijing
</a>
和<a>beijing<a/>,标签内的换行和空格都会当做标签内容的一部分来进行处理,所有写XML文件元素时,不允许标签内的内容换行

3.xml属性
1.一个标签可以有多个属性,每个属性都可以有自己的名字
<input name="text"><input/>
实质:标签属性所代表的信息可以改用子元素的形式来代替描述.
<input>
	<name>text<name/>
<input/>

4.注释,采用HTML的注释形式<!-- 注释 -->

5.CDATA区,特殊字符,不解析<![CDATA[内部数据不解析]]
<![CDATA[
<input>
	<name>text<name/>
<input/>
]]

6.处理指令:用来指挥解析引擎如何解析XML文档内容


XML约束:
1.XML DTD(document type deFinition),文档类型定义:开发人员的XML只能尊崇DTD中的XML格式来书写此XML文件
2.XML Schema

XML解析:
1.DOM(document object Model)解析:先把文档解析成对象加载到内存,然后对每个节点进行操作.attribute:属性
	*:dom解析需要注意的是,CRUD简单但是解析的文档不能太大(造成内存溢出)
2.SAX(simple api for xml)解析:非官方,但是现在所有的解析器都支持它
	*:sax每读取一行解析一行,解析速度快,sax只适合读取xml,不会对内存造成压力。
	
调整JVM大小:(若xml文件较大,超过jvm内存,就会造成内存溢出,此时可以选择调整jvm大小)


XML解析技术分为两种:DOM和SAX
XML解析开发包:Jaxp(SUN),Jdom , dom4j(性能最好)。

		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		Document d = db.parse("src/XML及其操作/configTest.xml");//得到document对象,与js操作类似
		
		.....中间操作.....
		
		注意:若是改变了内存中document对象的属性或值,直接添加节点,xml文本并不会改变,此时只会改变内存中document的对象,
		并未写入到磁盘中,所以此时要重新写入磁盘,改变原先xml文档值(javax.xml.transform.transformer)

<span style="white-space:pre">		
<span style="white-space:pre">		</span>TransformerFactory tff = TransformerFactory.newInstance();
<span style="white-space:pre">		</span>Transformer tf = tff.newTransformer();
<span style="white-space:pre">		</span>tf.transform(new DOMSource(d),new StreamResult(new FileOutputStream("src/XML及其操作/configTest.xml")));</span>

Sax解析步骤:
<span style="white-space:pre">	</span>xml文档--->Sax解析器---->事件处理器(程序员完成)
<span style="white-space:pre">			</span>//1.创建解析工厂
<span style="white-space:pre">			</span>SAXParserFactory sf = SAXParserFactory.newInstance();
<span style="white-space:pre">			</span>//2.创建解析器
<span style="white-space:pre">			</span>SAXParser sp = sf.newSAXParser();
<span style="white-space:pre">			</span>//3.得到读写器
<span style="white-space:pre">			</span>XMLReader xr = sp.getXMLReader();
<span style="white-space:pre">			</span>//4.设置内容处理器
<span style="white-space:pre">			</span>xr.setContentHandler(new SpcSaxHandler());
<span style="white-space:pre">			</span>//5.读取xml文档内容
<span style="white-space:pre">			</span>xr.parse("src/XML及其操作/Sax解析.xml");
<span style="white-space:pre">			</span>
<span style="white-space:pre">			</span>class SpcSaxHandler extends DefaultHandler {}
<span style="white-space:pre">			</span>或者 class SpcSaxHandler implements org.xml.sax.ContentHandler{}
<span style="white-space:pre">			</span>
<span style="font-family:Arial,Helvetica,sans-serif;"><span style="white-space: normal;">
</span></span>

原文地址:https://www.jb51.cc/xml/297128.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。