xml 是可扩展的标记性语言。
<?xml version="1.0" encoding="UTF-8"?> xml 声明。 <!-- xml 声明version 是版本的意思encoding 是编码-->
这个<?xml
要连在一起写,否则会有报错
属性
version
是版本号encoding
是xml 的文件编码standalone="yes/no"
表示这个xml 文件是否是独立的xml 文件图书有id 属性表示唯一标识,书名,有作者,价格的信息
<?xml version="1.0" encoding="UTF-8"?> <!-- xml 声明version 是版本的意思encoding 是编码--> <books> <!-- 这是xml 注释--> <book id="SN123123413241"> <!-- book 标签描述一本图书id 属性描述的是图书的编号--> <name>java 编程思想</name> <!-- name 标签描述的是图书的信息--> <author>华仔</author> <!-- author 单词是作者的意思,描述图书作者--> <price>9.9</price> <!-- price 单词是价格,描述的是图书的价格--> </book> <book id="SN12341235123"> <!-- book 标签描述一本图书id 属性描述的是图书的编号--> <name>葵花宝典</name> <!-- name 标签描述的是图书的信息--> <author>班长</author> <!-- author 单词是作者的意思,描述图书作者--> <price>5.5</price> <!-- price 单词是价格,描述的是图书的价格--> </book> </books>
html 和XML 注释一样: <!-- html 注释-->
<标签名>封装的数据</标签名>
<标签名/>
,<br/>
换行,<hr/>
水平线<标签名>封装的数据</标签名>
<title>java 编程思想</title>
<book id="SN213412341"> <!-- 描述一本书--> <author>班导</author> <!-- 描述书的作者信息--> <name>java 编程思想</name> <!-- 书名--> <price>9.9</price> <!-- 价格--> </book>
名称不能以数字或者标点符号开始
名称不能包含空格
<标签名属性=”值” 属性=”值” ...... />
< 标签名属性=”值” 属性=”值” ......>文本数据或子标签</标签名>
<![CDATA[ 这里可以把你输入的字符原样显示,不会解析xml ]]>
xml 是可扩展的标记语言。
不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析。
document 对象表示的是整个文档(可以是 html 文档,也可以是 xml 文档)
早期JDK 为我们提供了两种xml 解析技术DOM 和Sax 简介(已经过时,但我们需要知道这两种技术)
dom 解析技术是 W3C 组织制定的
sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple API for XML )
第三方的解析:
这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。
由于 dom4j 它不是 sun 公司的技术,而属于第三方公司的技术,我们需要使用 dom4j 就需要到 dom4j 官网下载 dom4j的 jar 包。
Document
对象Document
对象拿到根元素对象根元素.elelemts(标签名);
可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象<?xml version="1.0" encoding="UTF-8"?> <books> <book sn="SN12341232"> <name>辟邪剑谱</name> <price>9.9</price> <author>班主任</author> </book> <book sn="SN12341231"> <name>葵花宝典</name> <price>99.99</price> <author>班长</author> </book> </books>
SaxReader
对象。这个对象,用于读取xml 文件,并创建Document
/* * dom4j 获取Documet 对象 */ @Test public void getDocument() throws DocumentException { // 要创建一个Document 对象,需要我们先创建一个SAXReader 对象 SAXReader reader = new SAXReader(); // 这个对象用于读取xml 文件,然后返回一个Document。 Document document = reader.read("src/books.xml"); // 打印到控制台,看看是否创建成功 System.out.println(document); }
SAXReader
对象。来读取xml 文件,获取Document
对象Document
对象。拿到XML 的根元素对象getText()
方法拿到起始标签和结束标签之间的文本内容/* * 读取xml 文件中的内容 */ @Test public void readXML() throws DocumentException { // 需要分四步操作: // 第一步,通过创建SAXReader 对象。来读取xml 文件,获取Document 对象 // 第二步,通过Document 对象。拿到XML 的根元素对象 // 第三步,通过根元素对象。获取所有的book 标签对象 // 第四步,遍历每个book 标签对象。然后获取到book 标签对象内的每一个元素,再通过getText() 方法拿到起始标签和结束标签之间的文本内容 // 第一步,通过创建SAXReader 对象。来读取xml 文件,获取Document 对象 SAXReader reader = new SAXReader(); Document document = reader.read("src/books.xml"); // 第二步,通过Document 对象。拿到XML 的根元素对象 Element root = document.getRootElement(); // 打印测试 // Element.asXML() 它将当前元素转换成为String 对象 // System.out.println( root.asXML() ); // 第三步,通过根元素对象。获取所有的book 标签对象 // Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合 List<Element> books = root.elements("book"); // 第四步,遍历每个book 标签对象。然后获取到book 标签对象内的每一个元素, for (Element book : books) { // 测试 // System.out.println(book.asXML()); // 拿到book 下面的name 元素对象 Element nameElement = book.element("name"); // 拿到book 下面的price 元素对象 Element priceElement = book.element("price"); // 拿到book 下面的author 元素对象 Element authorElement = book.element("author"); // 再通过getText() 方法拿到起始标签和结束标签之间的文本内容 System.out.println("书名" + nameElement.getText() + " , 价格:" + priceElement.getText() + ", 作者:" + authorElement.getText()); } }
打印内容:
Book{sn='SN12341232', name='辟邪剑谱', price=9.9, author='班主任'} Book{sn='SN12341231', name='葵花宝典', price=99.99, author='班长'}