XML解析(基础
发布时间:2020-12-16 06:26:39 所属栏目:百科 来源:网络整理
导读:xml文件分为以下几个部分:(一般用来做配置文件)1.文档声明2.xml元素:指的就是xml文档中的标签3.属性4.注释5.CDATA区,特殊字符6.处理指令1.文档声明:(注意,文档保存到硬盘的形式要和浏览器打开的形式相同)//standalone:指定文档是否独立?xml version="1.0"
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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |