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-武汉
分享到:
相关推荐
在这个场景中,提到的两个关键库是`dom4j`和`jdom`,它们都是Java解析XML的重要工具。 **dom4j** dom4j是一个非常灵活且功能丰富的Java XML API,它提供了对DOM(文档对象模型),SAX(简单API for XML)和JDOM的...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
Java解析XML文件是Java开发中常见的一项任务,XML(eXtensible Markup Language)作为一种结构化数据存储格式,被广泛用于数据交换、配置文件和Web服务等场景。本篇文章将详细探讨Java如何利用DOM4J库来解析XML文件...
可以使用 Java 中的 DOM 或 SAX 解析器来解析 Word 文档中的书签。首先,需要解析 document.xml 文件,找到 `<w:bookmarkStart>` 标签,然后找到其兄弟节点 `<w:r>` 标签,最后找到 `<w:t>` 标签,并将其内容替换为...
Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...
本教程将介绍如何使用Java解析XML文件,并将解析结果导入MySQL数据库。 首先,我们需要引入处理XML的Java库——JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)API。JAXB用于对象与XML...
本示例将详细解释如何在Java中使用SAX解析XML文档,并通过注释进行详细说明。 首先,我们需要引入SAX解析器的依赖库,通常这可以通过在项目构建配置中添加JAXB或Xerces实现来实现。 ```java // 引入必要的库,如...
使用JAXB解析XML时,我们首先需要创建一个Java类模型,这个模型反映了XML文档的结构。每个XML元素对应一个Java类,类的属性对应元素的属性或子元素。例如,如果XML中有以下结构: ```xml <text>Some text here ...
Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...
在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和处理 XML 文件。本文将详细介绍如何使用 JDOM 解析 XML 文件。 JDOM 介绍 JDOM 是一个开源项目,基于树型结构,利用纯 Java ...
在Java中解析XML文件,通常需要引入特定的库,这些库提供了处理XML的API。"解析xml文件需要的jar包"这个标题指出,我们讨论的是Java环境下解析XML所需的依赖库。 Java中常用的解析XML的库有DOM(Document Object ...
1. DOM解析:使用`javax.xml.parsers.DocumentBuilderFactory`和`DocumentBuilder`创建一个解析器实例,然后调用`parse()`方法解析XML文件,返回一个`Document`对象。之后,可以通过`Document`对象的`...
为了在Java中解析XML文档,开发者通常需要依赖特定的库或jar包。以下是对标题和描述中提到的Java XML解析jar包的详细解释: 1. **dom4j-1.6.1.jar**: DOM4J是一个非常灵活的Java XML API,它提供了对DOM、SAX和...
### Java解析XML字符串 在给定的代码示例中,我们看到了如何使用JDOM库来解析一个XML字符串,并对其进行操作。下面我们将详细解析这个过程: 1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这...
在Java中,有多种方式可以解析XML文档,主要包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。每种方法都有其优缺点,适用于不同的场景。 1. DOM解析:DOM是将整个...
在这个例子中,我们将使用DOM4J库来演示如何在Java中解析XML文件。DOM4J是一个强大的Java XML API,它提供了丰富的功能,包括文档构建、遍历、查询以及XPath支持。 首先,让我们理解XML的基本概念。XML是一种自描述...
在IT行业中,调用Web服务并解析XML是常见的任务,特别是在Java开发中。Web服务,尤其是基于SOAP(Simple Object Access Protocol)的,提供了一种标准的跨平台、跨语言的数据交换方式。本教程将深入讲解如何在Java...