XML
DTD文档约束:
创建文件,后缀名是.dtd
示例:
Book.dtd文件
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
创建xml文件引入:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 书架 SYSTEM "Book.dtd">
<书架>
<书>
<书名>西游记</书名>
<作者>吴承恩</作者>
<售价>500</售价>
</书>
<书>
<书名>红楼梦</书名>
<作者>曹雪芹</作者>
<售价>500</售价>
</书>
</书架>
schema文档约束:
编写schema文档必须是.xsd结尾
示例;
Book.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.Dom4j_Test"
elementFormDefault="qualified">
<!--targetNamespace:申明约束文档的地址(命名空间)-->
<element name='书架'>
<!--写子元素-->
<complexType>
<!-- maxOccurs=' unbounded ' :书架下的子元素可以有任意多个! -->
<sequence >
<element name='书'>
<complexType>
<sequence>
<element name='书名' type='string'/>
<element name='作者' type='string'/>
<element name='售价' type='double'/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
Book xml:
<?xml version="1.0" encoding="UTF-8" ?>
<书架 xmlns="http://www.Dom4j_Test">
<书>
<书名>西游记</书名>
<作者>吴承恩</作者>
<售价>55</售价>
</书>
</书架>
Dom解析工具
文档模型:
代码示例:
首先的得到xml文件:
使用方法解析元素和属性:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream;
import java.util.List;
public class Dom4jTest01 {
public static void main(String[] args) throws DocumentException {
SAXReader sax=new SAXReader();
//相当于直接找本类的模块名去拿xml文件路径
//InputStream is= Dom4jTest01.class.getResourceAsStream("/Book_dtd.xml");
Document document = sax.read("Book_dtd.xml");
//获取根元素对象
Element rootElement = document.getRootElement();
System.out.println(rootElement);
List<Element> elements = rootElement.elements();
for (Element e:elements){
System.out.println(e);
}
}
}