1.1:写一个product.dtd文件,约束和验证product.xml只能包含的内容。并在product.xml引入外部的dtd文件.
1.2: 写一个测试类Test,解析products.xml,将一个商品标签进行解析封装成一个商品对象,并存储到商品的集合中。最后遍历集合输出所有的商品信息
ID | 名称 | 单价 | 颜色 | 尺寸 | 库存 |
P001 | 蜘蛛王皮鞋 | 268 | 黑色 | 42 | 500 |
P002 | ThinkPad x240 | 5678 | 黑色 | 12 | 50 |
P003 | WD移动硬盘 | 568 | 蓝色 | 5 | 10 |
package StudyWork1;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Test {
// 1.3: 写一个测试类Test,解析products.xml,
// 将一个商品标签进行解析封装成一个商品对象,
// 并存储到商品的集合中。
// 最后遍历集合输出所有的商品信息。
public static void main(String[] args) throws DocumentException {
// 创建XML解析器对象
SAXReader sr = new SAXReader();
// 读取xml文件
Document doc = sr.read("../XML/src/StudyWork1/products.xml");
// 获取根元素标签
Element root = doc.getRootElement();
System.out.println("根标签名称" + root.getName());
// 获取所有子元素标签
List<Element> stuList = root.elements("product");
System.out.println("ID\t名称\t\t单价\t颜色\t尺寸\t库存");
for (Element element : stuList) {
// 获取id的值
System.out.println(element.attributeValue("ID")+"\t"+element.element("name").getText()+"\t"+element.elementText("price")+"\t"+element.elementText("color")+"\t"+element.elementText("type")+"\t"+element.elementText("num"));
}
}
}
//以下是dtd文件的约束设置
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT products (product*) >
<!ELEMENT product (name,price,color,type,num) >
<!ATTLIST product ID CDATA #REQUIRED >
<!ELEMENT name (#PCDATA) >
<!ELEMENT price (#PCDATA) >
<!ELEMENT color (#PCDATA) >
<!ELEMENT type (#PCDATA) >
<!ELEMENT num (#PCDATA) >
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE products SYSTEM "product.dtd" >
<products>
<product ID="P001">
<name>蜘蛛网皮鞋</name>
<price>38</price>
<color>红色</color>
<type>42</type>
<num>55</num>
</product>
<product ID="P002">
<name>外星人笔记本</name>
<price>38</price>
<color>黑色</color>
<type>44</type>
<num>57</num>
</product>
<product ID="P003">
<name>WD移动硬盘</name>
<price>3</price>
<color>绿色</color>
<type>12</type>
<num>455</num>
</product>
</products>
使用的时候记得导入
运行结果