xml寒假不能大溜特溜,必须得狠狠地学
xml是可扩展的标记性语言。
xml的作用1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件。
3、还可以做为网络传输数据的格式。
元素是指从开始标签到结束标签的内容。可以当标签理解。
例如下面的
xml元素命名规则书本1 我不好说<br">> 上面的特殊字符用的很秒
● 名称可以含字母、数字以及其他的字符 (甚至中文都行头)
● 名称不能以数字或者标点符号开始
● 名称不能以字符“xml" (或者XML、Xml)开始
● 名称不能包含空格
根元素就是顶级元素,
没有父标签的元素,叫顶级元素。
根元素是没有父标签的顶级元素,而且是唯一个才行。下面我多了一个student元素 ,它直接给我报错。
格式
问题: 我想要<<<<<<<<<<< 但是不想一直写 <
CDATA语法可以告诉xml解析器,我CDATE里的文本内容,只是纯文本,不需要xml语法解析。
上面的特殊字符用的很秒dom4j
前面我们写xml文件,非常的开心,但我们需要用xml的内容该怎么办捏,这时候就需要xml解析技术。
配置我们广快(最近看红警08看多了)溜到他的官网
下载dom4j-1.6.1和 我特异损了一个和视频同步版本。
很快嗷,我们打开文件夹一看
然后我们溜一溜docs 看1看index 然后quick start 了解下
那么就让我们快速的来写一些东西来试试看把
现在,要这个将jar包添加到类路径
马上创建一个类来开溜,这时候肯定会有家人们会问了,这个SAX是什么东西,其实他是Simpel API for xml 基于事件驱动,读取一行解析一行,不能增删,只能查询。
我们通过创建一个SAXReader输入流去读取xml文件,会获得一个document对象。
document 对象 有一个重要的方法叫 getRootElement() 可以获取到根元素,拿到之后可以进行各种play掠
把标签对象转为标签字符串asXML()
获取子元素有两种方法element 和 elements()。
下图,我们拿到根元素对象后,很快嗷,elements()返回一个Elment的集合,就拿到了他的子元素集合,然后狠狠的滴遍历掠掠掠通过asXML(),输出来康康。
间接取法
获取子元素,使用getText()方法
你的智力会被侮辱,建议别看…
这时候,聪明的你,肯定会说,欸欸欸,怎么给来了一个空指针异常啊,我一看xml文件,嗷↑↓,原来是
我这第三本书啊,直接把name写成标签属性咯
直接取法
elementText()
甚至不会出现间接获取的那种错误,找不到就输出null,所以我强烈建议大家使用第二种方法
现在刚刚幸幸苦苦写的book类,来使用下
book类
package com.flzj.pojo; import java.math.BigDecimal; public class Book { private String sn; private String name; private BigDecimal price; private String author; @Override public String toString() { return "Book{" + "sn='" + sn + ''' + ", name='" + name + ''' + ", price=" + price + ", author='" + author + ''' + '}'; } public Book(String sn, String name, String author) { this.sn = sn; this.name = name; this.author = author; } public String getSn() { return sn; } public void setSn(String sn) { this.sn = sn; } public String getName() { return name; } public void setName(String name) { this.name = name; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
xml代码
书本1 我不好说<br">> 上面的特殊字符用的很秒
体验解释的java代码
package com.flzj.pojo; import org.dom4j.document; import org.dom4j.documentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; import java.util.List; public class Dom4jTest { @Test public void test1() throws Exception { //创建一个SaxReader输入流,去读取xml配置文件,生成document对象 SAXReader saxReader = new SAXReader(); document document = saxReader.read("src/books.xml"); System.out.println(document); } @Test public void test2() throws documentException { //读取books.xml 文件 SAXReader saxReader = new SAXReader(); document document = saxReader.read("src/books.xml"); //通过document对象获取元素 Element rootElement = document.getRootElement(); //通过根元素获取book标签对象 //element()和elements()都是通过标签名查找子元素 Listbooks = rootElement.elements("book"); //遍历开溜 for(Element book : books){ String sn = book.elementText("sn"); String name = book.elementText("name"); String author = book.elementText("author"); System.out.println(new Book(sn,name,author)); } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)