XML

一、简介

XML 指可扩展标记语言(eXtensible Markup Language)。
XML
被设计用来传输和 存储数据(框架的部分,配置文件,properties ,yml)。
<books>
<book >
<name>三国</name>
<price>386.9</price>
</book>
<book >
<name>红高粱</name>
<price>36.9</price>
</book>
<book >
<name>蛙</name>
<price>36.9</price>
</book>
</books>

xml作为数据的传输,现在已经被json代替了,如下代码就是json
[ {"name":"三国","price":386.9},{"name":"红高粱","price":36.9},{"name":"蛙","price":36.9}]
以上代码就是一个描述书籍的xml文件
因而xml的可扩展性,编写者可以随意的写标签不太好,那么就需要制定关于xml文件内容的约定,DTD可以达到这样的效果

二、DTD

1)简介

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
一个简单的dtd文件(book.dtd)

  1. <!ELEMENT books (book+)>
  2. <!ELEMENT book (name,price)>
  3. <!ELEMENT name (#PCDATA)>
  4. <!ELEMENT price (#PCDATA)>

    2)dtd文件的引入,可以通过三种方式

    1、引入外部的dtd文件

  5. <!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">

2、使用内部的dtd文件

  1. <!DOCTYPE books [
  2. <!ELEMENT books (book+)>
  3. <!ELEMENT book (name,price)>
  4. <!ELEMENT name (#PCDATA)>
  5. <!ELEMENT price (#PCDATA)>

  6. ]>

3、使用外部的dtd文件(网络上的dtd文件)

  1. <!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD文档的URL">

    三、XML文件的解析()

    XML文件现在更多用于存放配置信息,解析方式主要有如下四种:
      1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。而DOM4J是使用最多的。需要导包dom4j.jar
    DOM4J
        特征:
          1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。
          2、它使用接口和抽象基本类方法。
          3、具有性能优异、灵活性好、功能强大和极端易用的特点。
          4、是一个开放源码的文件
    public class Test {

public static void main(String[] args) {

SAXReader reader= new SAXReader();

try {
Document dom=reader.read(new File("book.xml"));

Element root=dom.getRootElement();//获取到根元素
System.out.println( root.getName() );

//获取到子元素对象
List<Element> cs=root.elements();

for (Element el : cs) {//book元素

Element nameEl=el.element("name");//name元素
Element priceEl=el.element("price");//price元素

//获取文本
String name=nameEl.getText();
String pstr=priceEl.getText();
float price=Float.parseFloat(pstr);

System.out.println(name+","+price);

}

} catch (DocumentException e) {
e.printStackTrace();
}

}

}