使用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