XML:可扩展的标记性语言。
XML的主要作用:
1、用来保存数据;
2、可以做为项目或者模块的配置文件;
3、做为网络传输数据的格式(JSON现在为主)。
XML的注释和HTML的一样。
XML命名规则:
1、名称可以包含字母、数字以及其他的字符;
2、名称不能以数字或标点符号开始;
3、名称不能包含空格。
XML标签也分单、双标签。
XML的属性:
一个标签上可以书写多个属性。每个属性的值必须用引号括起来。
XML对大小写敏感,且标签要闭合。标签必须正确嵌套。XML文档必须要有根元素。
XML里面的文本区域:(CDATA区) 区里的内容只是纯文本。
格式: <![CDATA[....纯文本,原样显示字符....]]>
早期JDK提供了两种XML解析技术DOM和Sax
DOM解析技术是W3C组织定的
SAX解析,是一行一行读取xml文件进行解析,不会创建大量dom对象。
第三方的解析:
jdom在dom基础上进行了封装
dom4j又对jdom进行了封装
pull主要用于Android手机开发,是在跟sax非常类似都是事件机制解析xml文件
dom4j解析技术:
这个Dom4j是第三方的解析技术,我们需要第三方给我们提供好的类库才可以解析xml文件。这个jar包网上都有
要记得把这个jar包添加到类路径下。
<?xml version="1.0" encoding="utf-8" ?> <!--xml的声明-->
<books>
<book>
<name>计算机网络</name>
<price>70</price>
<出版社>机械工业出版社</出版社>
</book>
<book>
<name>操作系统导论</name>
<price>60</price>
<出版社>人民邮电出版社</出版社>
</book>
</books>
使用dom4j技术解析该xml文件:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.List;
public class Dom4jTest {
public static void main(String[] args) throws Exception {
//1.读取books.xml文件
SAXReader reader = new SAXReader();
Document document = reader.read("XML/src/books.xml");
//System.out.println(document);
//2.通过Document对象来获取根元素
Element rootElement = document.getRootElement();
// System.out.println(rootElement);
//System.out.println(rootElement.asXML()); //asXML()把标签对象转换为标签字符串
//3.通过根元素获取标签对象
List<Element> books = rootElement.elements("book");
//4.遍历,处理每个book标签转换为Book类
for(Element book : books) {
//System.out.println(book.asXML());
Element nameElement = book.element("name");
Element elementPrice = book.element("price");
Element elementPress = book.element("出版社");
//getText()可以获取标签中的文本内容
System.out.println("书名:" + nameElement.getText() + " , 价格:"
+ elementPrice.getText() + ", 出版社:" + elementPress.getText());
}
}
}
注:如果是高版本的JDK运行时会出现警告,但是不影响运行。
解决方案是把项目JDK降低到1.8及以下。