学习XML的笔记Day1
发布时间:2020-12-15 23:08:21 所属栏目:百科 来源:网络整理
导读:在做完题时,要注意一些细节 重点在两种解析dom,sax,dom4j dom的建立 DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder=builderFactory.newDocumentBuilder(); DocumentBuilderFactory builderFa
在做完题时,要注意一些细节
重点在两种解析dom,sax,dom4j dom的建立 DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder=builderFactory.newDocumentBuilder(); DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder=builderFactory.newDocumentBuilder(); Document dom=docBuilder.parse(new File("bin....")) //这个方法将遍历当前节点的所有子孙节点,通过删除空的 Text 节点, //已经合并所有相邻的 Text 节点来规范化文档。该方法在进行节点的插 //入或删除操作后,对于简化文档树的结构很有用。 dom.getDocumentElement().normalize(); 在dom中常用的是 NodeList nodes=dom.getElementByTagName("camyany") for(;nodes.getLength();) dom的优点: 只需要解析一次,dom就可以随时用,可以实现CRUD对数据操作。 dom缺点: dom由于一次性将树加载到内存中,这样就比较消耗资源,占用内存。 速度慢 sax的建立 SaxParseFactory factory=SaxParseFactory.newInstance(); SaxParse saxParse=factory.newSaxParse(); XMLReader xmlReader=saxParse.getXMLReader(); xmlReader.setContentHandler(new MyContentHandler); xmlReader.parse("book.xml"); sax的优点: 速度快,它是触发式的,当我们用它去解析book.xml,只要读取一行,就会调用接口里面实现的方法 所以我们实现了一个接口 MyContentHandler implementations ContentHandler,但是这样之间用接口的方法,要实现 ContentHandler 接口中所有的方法,我们可以用一个更好一点的DefaultHandler,这是一个实类,我们只要继承它就可以,我们想实现一些什么方法,我 们就写些什么。 sax缺点: 只能对文档进行读操作。 dom4j的建立 SaxReader saxReader=new SaxReader(); Document dom=saxReader.read("bin/..."); Element element=dom.getRootElement(); dom4j是用来读取XML的利器,他中间有许多好的方法,同时我们增删查完文档,我们还可以重写入文档。 FileWriter fw=new FileWriter("bin/Dom4JDemoDay1/sg.xml"); dom.write(fw); fw.flush(); fw.close(); 自己在使用中出的错: 当我写文件时,我没有注意myeclipes的自动刷新功能,写入了文件,当去查看的时候有查不到,弄了半天,发现最后文件是已经被改了的 1.复习笔记,回想xml的语法,照着语法要求写一个尽量复杂的xml 2.复习dtd语法,照着ppt上的dtd,写一个对应的xml出来 !!!3.复习两种xml的解析思想,复习一下老师课堂上敲的sax解析,重点练习使用dom4j进行增删改查操作 4.掌握名称空间的概念,很重要.明白如何在xml中引入一个dtd,打开schema文档照着其中的schema试着去写符合约束的xml 1,在做第一题时,我发现我忽视的很多问题,<![CDATA[]]>只能放在根元素下 2, <!ELEMENT campanys (campany+)> <!ELEMENT campany (cname,products,address,phone,cofounder,weiboid,outlookofval)> <!ELEMENT cname (#PCDATA)> 写dtd时注意cname与(#PCDATA)有空格,不然会发生错误 3,产品products中嵌套一个product+有错 campany (cname,products(product+),outlookofval) 练习对应的是DayOne (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |