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

物联沃分享整理
物联沃-IOTWORD物联网 » 使用java程序来打印出xml中的数据

发表评论