加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

学习XML的笔记Day1

发布时间:2020-12-16 05:09:10 所属栏目:百科 来源:网络整理
导读:在做完题时,要注意一些细节 重点在两种解析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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读