Java中如何解析XML文件
xml文件:"student.xml"
xml 代码- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE zmclass SYSTEM "student.dtd">
- <zmclass id="0703">
- <student sex="男">
- <name>MICHAEL</name>
- <age>24</age>
- <address>武汉</address>
- </student>
- <student sex="女">
- <name>王黎</name>
- <age>24</age>
- <address>武汉</address>
- </student>
- <student sex="男">
- <name>莫智洲</name>
- <age>24</age>
- <address>武汉</address>
- </student>
- <student sex="男">
- <name>曹锋</name>
- <age>23</age>
- <address>武汉</address>
- </student>
- </zmclass>
dtd文件:"student.dtd"
python 代码- <!--
- ELEMENT 元素
- ATTLIST 属性
- 元素出现的次数:
- *: 从“0”到“N”。
- +: 大于等于“1”
- ?: 是“0”或者是“1”。
- 默认: 只可能是“1”。
- 常用属性类型:
- CDATA:一般的文字。
- ID:该属性在XML文件中是唯一的,常用来表示身份证。
- ETC......
- #REQUIRED 大写
- #required 小写
- 表示在标记中必须出现此属性。
- #IMPLIED 大写
- #implied 小写
- 表示在标记中可以不出现的属性。
- #FIX 大写
- #fix 小写
- 表示在标记中是某个固定的值。
- -->
- <!ELEMENT zmclass (student+)>
- <!ELEMENT name (#PCDATA)>
- <!ELEMENT address (#PCDATA)>
- <!ELEMENT age (#PCDATA)>
- <!ATTLIST zmclass id CDATA #REQUIRED>
- <!--建立“父子”关系-->
- <!ELEMENT zmclass (name,address,age)>
- <!ATTLIST student sex (男|女) #REQUIRED>
java文件:"DomTest.java"
- package test;
- /**
- *
- * @描述:解析XML文件的测试类。
- * @作者: 赵明
- * 2007-9-5
- */
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
- public class DomTest {
- public static void main(String[] args){
- List stuArrList = new ArrayList();//创建用来保存学生信息的集合。
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- try {
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document doc = builder.parse(new File("student.xml"));
- Element root = doc.getDocumentElement();//得到文档对象树。
- //System.out.println(root);
- System.out.println("根元素名称:"+root.getTagName());
- NodeList stuList = root.getElementsByTagName("student");
- //开始逐个创建学生对象。
- for(int i = 0; i < stuList.getLength();i++){
- Student s = new Student();
- Element stuE = (Element)stuList.item(i);
- //System.out.println(stuE);
- s.setSex(stuE.getAttribute("sex"));//向学生对象中写入性别属性。
- NodeList stuInfoList = stuE.getChildNodes();
- for(int j = 0;j < stuInfoList.getLength();j++){
- Node temp = stuInfoList.item(j);
- if(temp.getNodeType()==Node.ELEMENT_NODE){//判断对象的类型的节点是不是元素。
- Element tempE = (Element)temp;//转换类型到元素。
- Node initW = tempE.getLastChild();
- //Node initW = tempE.getFirstChild();
- //由于只有一个节点,第一和最后一个都是同一个。
- if("name".equals(tempE.getNodeName())){
- s.setName(initW.getNodeValue());//加入姓名。
- }if("age".equals(tempE.getNodeName())){
- s.setAge((Integer.parseInt(initW.getNodeValue())));//加入年龄。
- }if("address".equals(tempE.getNodeName())){
- s.setAddress((initW.getNodeValue()));//加入地址。
- }
- }
- }
- stuArrList.add(s);//添加进集合中。
- }
- Iterator ite = stuArrList.iterator();//使用跌代器遍历集合元素。
- while(ite.hasNext()){
- Student s = (Student)ite.next();
- System.out.println(s);
- }
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
java文件:"Student.java"
java 代码- package test;
- /**
- *
- * @描述:学生类用来保存学生的信息。
- * @作者: 赵明
- * 2007-9-5
- */
- public class Student {
- private String name;
- private String sex;
- private int age;
- private String address;
- public String toString(){//覆盖该方法。
- return name+"-"+sex+"-"+age+"-"+address;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- }
运行结果:
ruby 代码- 根元素名称:zmclass
- MICHAEL-男-24-武汉
- 王黎-女-24-武汉
- 莫智洲-男-24-武汉
- 曹锋-男-23-武汉
相关推荐
java解析XML文件java解析XML文件java解析XML文件java解析XML文件java解析XML文件java解析XML文件
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
python解析xml文件,python语言解析xml文件的常用的有两种方式: 通过MiniDom库解析xml文件 通过ElementTree库解析xml文件
C++实现对xml文件的解析,C++实现对xml文件的解析,C++实现对xml文件的解析。
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml...
MFC解析XML文档类 MFC解析XML文档类 MFC解析XML文档类 MFC解析XML文档类
支持SAX解析XML文件,DOM解析XML文件,Pull解析器解析XML文件,Pull生成XML文件,JAVA和Kotlin两种语言编写
Sax解析XML文件解
资源名称:使用Javascript解析xml文件或xml格式字符串 中文WORD版 内容简介: 本文档主要讲述的是使用Javascript解析xml文件或xml格式字符串;javascript中,不论是解析xml文件,...
开发环境为VC,基于对话框,用msxml组件解析XML文档,运用递归循环的方法实现树结构,支持中文,可以运行的一个实例。
解析XML文件例子
PHP解析XML文档,PHP解析XML文档,PHP解析XML文档
tinyxml解析XML文件
Java中如何解析XML文件,创建xml文件,增、删、改、查 xml节点信息
pull解析xml文件
关于jq读取xml的,有需要的朋友可以下载。
Sax解析xml文件详细例子,解析复杂节点的xml,把内容显示到view中,例子简单完整,易用