根据Schema文件编写xml并解析xml文件

前端之家收集整理的这篇文章主要介绍了根据Schema文件编写xml并解析xml文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
conf.xsd:

<?xml version="1.0" encoding="utf-8"?>  
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified" 
attributeFormDefault="unqualified">   
	  <xs:element name="学生名册">
	  	<!-- 根元素为学生名册,它包含了若干个学生,所以学生名册一定是一个complexType,一定是个复杂类型 -->
	  	<xs:complexType>
	  	 <!--学生名册里面有多个学生,所以可以用sequence-->  
	  	 <!--每个sequence里面就一个元素:学生,而且它可以不断重复,0次或者多次--> 
	  	 <xs:sequence minOccurs="0" maxOccurs="unbounded">
	  	 	<xs:element name="学生">
	  	 	<!-- 因为学生也是一个复杂的类型 -->
	  	 		<xs:complexType>
	  	 			<xs:sequence>
	  	 				<xs:element name="姓名" type="xs:string"/>
	  	 				<!-- 性别使用简单类型 -->
	  	 				<xs:element name="性别">
	  	 					<xs:simpleType>
	  	 						<xs:restriction base="xs:string">
	  	 							<xs:enumeration value="男"/>
	  	 							<xs:enumeration value="女"/>
	  	 						</xs:restriction>
	  	 					</xs:simpleType>
	  	 				</xs:element>
	  	 				
	  	 				<!-- 年龄也是一个简单类型 -->
	  	 				<xs:element name="年龄" >
	  	 					<xs:simpleType>
	  	 						<xs:restriction base="xs:int">
	  	 							<xs:minInclusive value="1"/>
	  	 							<xs:maxInclusive value="150"/>
	  	 						</xs:restriction>
	  	 					</xs:simpleType>
	  	 				</xs:element>
		 		</xs:sequence>
	  	 		</xs:complexType>
	  	 	</xs:element>
	  	 </xs:sequence>
	  	</xs:complexType>
	  </xs:element>
</xs:schema>  

test.xml:

<?xml version="1.0" encoding="UTF-8"?>
<学生名称 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="conf.xsd">
	<学生 学号="1">
		<姓名>张三</姓名>
		<性别>男</性别>
		<年龄>23</年龄>
	</学生>
	
	<学生 学号="2">
		<姓名>李四</姓名>
		<性别>女</性别>
		<年龄>24</年龄>
	</学生>
	
	<学生 学号="3">
		<姓名>王五</姓名>
		<性别>男</性别>
		<年龄>25</年龄>
	</学生>
	
</学生名称>



文件的解析:

package kw.java;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.AbstractAttribute;

public class ReadXMlDemo {
	static String Xmlname = "conf/test.xml";
	public static void main(String[] args) throws DocumentException {
		SAXReader reader = new SAXReader();
		File file = new File(Xmlname);
		//读取文档实体
		Document doc = reader.read(file);
		
		/*//获得指定路径下的所有节点
		List list = doc.selectNodes("//学生");
		for(Iterator it = list.iterator();it.hasNext();){
			  //获得具体的row元素   
            Element element = (Element)it.next();
            //获得所有的属性
            List eList = element.attributes();
            for(Iterator iter1 = eList.iterator();iter1.hasNext();){  
                //将每个属性转化为一个抽象属性,然后获取其名字和值  
                AbstractAttribute aa = (AbstractAttribute)iter1.next();  
                System.out.println("Name:"+aa.getName()+";Value:"+aa.getValue());  
            }
           
		}*/
		
		
		
		//获得跟元素
		Element root = doc.getRootElement();
		//得到所有的子元素
		List<Element> list = root.elements();
	}
}

猜你在找的XML相关文章