dom4j读取xml和dtd的使用方式

 package xmlTest;
 
import java.util.List;
 
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
 
public class XmlTest {
@Test
public void test() throws DocumentException{
//1.创建SAXReader对象reader
SAXReader reader = new SAXReader();
//2.reader对象关联指定xml文件,创建Document
Document document = reader.read("src\person.xml");
//3.获取根节点
Element root = document.getRootElement();
//4.通过根节点获取子节点
@SuppressWarnings("unchecked")
List<Element> elements = root.elements("person");
//5.遍历子节点,并输出
for(Element person:elements){
//获取子节点中的属性
String id = person.attributeValue("id");
//获取子节点中的内容
Element nameElement = person.element("name");
Element ageElement = person.element("age");
Element scoreElement = person.element("score");
System.out.println(id+" "+nameElement.getText()+" "+ageElement.getText()+" "+scoreElement.getText());
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
 
<!-- 这是xml中的注释 xml用法 :由于实际工作中 可能会出现互相传递一组数据的情况直接传递数据文件 传统的数据文件可读性较差 并且需要io流解析所以创建了xml版本的数据文件现在认为不仅xml可以用于互相传递数据 也可以用作配置文件所以xml 现在基本上作为配置文件和数据文件两种格式存在 -->
 
-<persons>
 
 
-<person id="1001">
 
<name>azrail</name>
 
<age>23</age>
 
<score>15</score>
 
</person>
 
 
-<person id="1002">
 
<name><涛哥></name>
 
<age>19</age>
 
<score>100</score>
 
</person>
 
 
-<person id="1003">
 
<name>晟哥</name>
 
<age>21</age>
 
<score>100</score>
 
</person>
 
 
-<person id="1004">
 
<name>浩哥</name>
 
<age>18</age>
 
<score>100</score>
 
<car id="1" name="bmw"/>
 
 
-<money>
 
-<![CDATA[
<> 这里是纯文本 想些什么就写什么 不会被转译 &lt;
]]>
</money>
 
</person>
 
</persons>

//TVSCHEDULE.dtd  dtd文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TVSCHEDULE [
 
<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>
 
<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
 
]>
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE TVSCHEDULE>
 
-<TVSCHEDULES>
 
 
-<TVSCHEDULE NAME="1">
 
 
-<CHANNEL CHAN="1">
 
<BANNER/>
 
 
-<DAY>
 
<DATE/>
 
<HOLIDAY/>
 
</DAY>
 
</CHANNEL>
 
</TVSCHEDULE>
 
 
-<TVSCHEDULE NAME="1">
 
 
-<CHANNEL CHAN="1">
 
<BANNER/>
 
 
-<DAY>
 
<DATE/>
 
 
-<PROGRAMSLOT VTR="">
 
<TIME/>
 
<TITLE LANGUAGE="" RATING=""/>
 
<DESCRIPTION/>
 
</PROGRAMSLOT>
 
</DAY>
 
</CHANNEL>
 
</TVSCHEDULE>
 
</TVSCHEDULES>
原文地址:https://www.cnblogs.com/m-ming/p/11598476.html