`
云水禅心
  • 浏览: 26062 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java中如何解析XML文件

    博客分类:
  • java
阅读更多
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文件的测试类。     
    */   
    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 代码

java文件:"Student.java"
java 代码


    package test;   
    /**  
    *  
    * @描述:学生类用来保存学生的信息。
    */   
    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所需jar包

    在这个场景中,提到的两个关键库是`dom4j`和`jdom`,它们都是Java解析XML的重要工具。 **dom4j** dom4j是一个非常灵活且功能丰富的Java XML API,它提供了对DOM(文档对象模型),SAX(简单API for XML)和JDOM的...

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    java解析XML文件

    Java解析XML文件是Java开发中常见的一项任务,XML(eXtensible Markup Language)作为一种结构化数据存储格式,被广泛用于数据交换、配置文件和Web服务等场景。本篇文章将详细探讨Java如何利用DOM4J库来解析XML文件...

    java实现xml解析word文档代码实现

    可以使用 Java 中的 DOM 或 SAX 解析器来解析 Word 文档中的书签。首先,需要解析 document.xml 文件,找到 `&lt;w:bookmarkStart&gt;` 标签,然后找到其兄弟节点 `&lt;w:r&gt;` 标签,最后找到 `&lt;w:t&gt;` 标签,并将其内容替换为...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    本教程将介绍如何使用Java解析XML文件,并将解析结果导入MySQL数据库。 首先,我们需要引入处理XML的Java库——JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)API。JAXB用于对象与XML...

    Java SAX解析Xml文档Demo

    本示例将详细解释如何在Java中使用SAX解析XML文档,并通过注释进行详细说明。 首先,我们需要引入SAX解析器的依赖库,通常这可以通过在项目构建配置中添加JAXB或Xerces实现来实现。 ```java // 引入必要的库,如...

    JAVA JAXB 解析XML嵌套子节点为字符串

    使用JAXB解析XML时,我们首先需要创建一个Java类模型,这个模型反映了XML文档的结构。每个XML元素对应一个Java类,类的属性对应元素的属性或子元素。例如,如果XML中有以下结构: ```xml &lt;text&gt;Some text here ...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...

    java 使用JDOM解析xml文件.docx

    在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和处理 XML 文件。本文将详细介绍如何使用 JDOM 解析 XML 文件。 JDOM 介绍 JDOM 是一个开源项目,基于树型结构,利用纯 Java ...

    解析xml文件需要的jar包

    在Java中解析XML文件,通常需要引入特定的库,这些库提供了处理XML的API。"解析xml文件需要的jar包"这个标题指出,我们讨论的是Java环境下解析XML所需的依赖库。 Java中常用的解析XML的库有DOM(Document Object ...

    java导入导出xml文件

    1. DOM解析:使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`创建一个解析器实例,然后调用`parse()`方法解析XML文件,返回一个`Document`对象。之后,可以通过`Document`对象的`...

    Java中解析Xml所系jar包集合

    为了在Java中解析XML文档,开发者通常需要依赖特定的库或jar包。以下是对标题和描述中提到的Java XML解析jar包的详细解释: 1. **dom4j-1.6.1.jar**: DOM4J是一个非常灵活的Java XML API,它提供了对DOM、SAX和...

    java解析xml字符串

    ### Java解析XML字符串 在给定的代码示例中,我们看到了如何使用JDOM库来解析一个XML字符串,并对其进行操作。下面我们将详细解析这个过程: 1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这...

    java心电图xml解析.zip

    在Java中,有多种方式可以解析XML文档,主要包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。每种方法都有其优缺点,适用于不同的场景。 1. DOM解析:DOM是将整个...

    一个Java 解析XML的例子

    在这个例子中,我们将使用DOM4J库来演示如何在Java中解析XML文件。DOM4J是一个强大的Java XML API,它提供了丰富的功能,包括文档构建、遍历、查询以及XPath支持。 首先,让我们理解XML的基本概念。XML是一种自描述...

    JAVA调用webservice并解析xml

    在IT行业中,调用Web服务并解析XML是常见的任务,特别是在Java开发中。Web服务,尤其是基于SOAP(Simple Object Access Protocol)的,提供了一种标准的跨平台、跨语言的数据交换方式。本教程将深入讲解如何在Java...

Global site tag (gtag.js) - Google Analytics