使用java程序来打印出xml中的数据
首先使用eclipse创建一个xml文件
2:在xml中使用Schema约束,demo.xsd是xsd文件名
<?xml version="1.0" encoding="UTF-8"?> <students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="demo.xsd"> <student no="a001"> <name>小明1号</name> <age>19</age> <scorce>32</scorce> <schoolname> <garder>大一</garder> <class>2班</class> </schoolname> </student> <student no="b001"> <name>小强1号</name> <age>22</age> <scorce>52</scorce> <schoolname> <garder>大二</garder> <class>3班</class> </schoolname> </student> </students>
3:确定根节点
4:<complexType>当有复杂节点的时候,必须使用
5:<squence>规定下面的标签必须按照指定的位置抒写
11—16:约束年龄的标签
28:用来约束student标签中的属性,attribute定义属性, rqueired必须的
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema"> <element name="students"> <complexType> <sequence> <element name="student" minOccurs="1" maxOccurs="9999"> <complexType> <sequence> <element name="name" type="string"></element> <element name="age" type="integer"> <simpleType> <restriction base="integer"> <minInclusive value="18"></minInclusive> <maxInclusive value="25"></maxInclusive> </restriction> </simpleType> </element> <element name="scorce" type="string"></element> <element name="schoolname"> <complexType> <sequence> <element name="garder" type="string"></element> <element name="class" type="string"></element> </sequence> </complexType> </element> </sequence> <attribute name="no" type="string" use="required"></attribute> </complexType> </element> </sequence> </complexType> </element> </schema>
接下来就来创建一个java文件,用来输出xml里面的数据
之后要导入dom4j的jar文件
1.右键—new—Folder
2.将下载好的dom4j直接拉近lib中,然后右键Build Path

package com.cc.schemajava;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class StudentReader {
public void readXml() {
String file = "C:\Users\Jun\Desktop\java web\jsp\day3\XML2\src\com\cc\schema\student.xml";
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
Element root = document.getRootElement();
List<Element> students = root.elements("student");
for(Element e : students) {
// Element name = e.element("name");
// String empName = name.getText();
Attribute att = e.attribute("no");
System.out.println("编号:"+att.getText());
System.out.println("姓名:"+e.elementText("name"));
System.out.println("年龄:"+e.elementText("age"));
System.out.println("分数:"+e.elementText("score"));
Element schoolstatus = e.element("schoolstatus");
System.out.println("年级:"+schoolstatus.element("grade").getText());
System.out.println("班级:"+schoolstatus.element("class").getText());
System.out.println();
}
} catch (DocumentException e) { //如果xml文件有语法错误,将抛出异常
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
StudentReader e = new StudentReader();
e.readXml();
}
}
注意:当创建对象的时候,出现报错,记得要导入对应的包,dmo4j的包
1.首先先创建一个方法
2.创建String file 用来接收xml的地址
3.创建SAXReader对象 SAXReader类是读取xml文件的核心类,用于将xml解析后以”树”的结构保存在内存中
4.使用read()方法传入xml文件,返回类型为Document,一个xml就是对应的一个Document对象
5.出现异常,通过try catch来解决异常
6.getRootElement()方法用来获取xml文件中的根节点,即students标签,返回的是Element对象
7.在dom4j中所有的标签都是使用Element来进行包装
8.获得students下所有的student标签,因为有多个所有使用elements()方法,获取到所有标签的集合,返回List(Element)
9.通过for循环来进行遍历,在循环中提取出name、age、score element()方法用于获取唯一的子节点
10.getText()方法用来获取标签的文本 * 11.可以通过elementText(“xxx”)方法来直接获取,xxx代表标签元素
12.提取属性的方法:attribute(); 返回Attribute