前端之家收集整理的这篇文章主要介绍了
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.f2er.com/xml/297128.html