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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值