java 解析xml实例
import java.io.*; //Java基础包,包含各种IO操作
import java.util.*; //Java基础包,包含各种标准数据结构操作
import javax.xml.parsers.*; //XML解析器接口
import org.w3c.dom.*; //XML的DOM实现
import org.apache.crimson.tree.XmlDocument;//写XML文件要用到
public class XMLTest{
public static Vector<StudentInfo> getAll(String file)
throws Exception {
Vector<StudentInfo> students = new Vector<StudentInfo>();
// 为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce); // 出异常时输出异常信息,然后退出,下同
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(file);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
// 先取根元素 students
Element root = doc.getDocumentElement();
// 取 student 元素列表
NodeList nStudents = root.getElementsByTagName("student");
for (int i = 0; i < nStudents.getLength(); i++) {
// 依次取每个 user 元素
Element eStudent = (Element) nStudents.item(i);
// 创建一个 user 的Bean实例
StudentInfo sInfo = new StudentInfo();
// 取user name 属性
sInfo.name = eStudent.getAttribute("name");
// 取 sex 元素,下面类同
NodeList nlSex = eStudent.getElementsByTagName("sex");
if (nlSex.getLength() == 1) {
Element e = (Element) nlSex.item(0);
Text t = (Text) e.getFirstChild();
sInfo.sex = t.getNodeValue();
}
// age
NodeList nlAge = eStudent.getElementsByTagName("age");
if (nlAge.getLength() == 1) {
Element e = (Element) nlAge.item(0);
Text t = (Text) e.getFirstChild();
sInfo.age = Integer.parseInt(t.getNodeValue());
}
students.add(sInfo);
}
return students;
}
public static boolean addNode(String file, StudentInfo student)
throws Exception{
//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(file);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
//没有此用户名才添加
if (isNameExists(doc, student.name) == null) {
// 先取根元素 students
Element root = doc.getDocumentElement();
// 下面建立一个student节点,并具有name属性
Element eStudent = doc.createElement("student");
eStudent.setAttribute("name", student.name);
root.appendChild(eStudent);
// 建立 sex 元素,添加到 student 下面,下同
Element eSex = doc.createElement("sex");
eStudent.appendChild(eSex);
Text tSex = doc.createTextNode(student.sex);
eSex.appendChild(tSex);
//
Element eAge = doc.createElement("age");
eStudent.appendChild(eAge);
Text tAge = doc.createTextNode("" + student.age);
eAge.appendChild(tAge);
// 把XML文档输出到指定的文件
FileOutputStream outStream = new FileOutputStream(file);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
((XmlDocument) doc).write(outWriter, "GB2312");
outWriter.close();
outStream.close();
return true;
}
return false;
}
public static boolean removeByName(String file, String name)
throws Exception{
//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce); // 出异常时输出异常信息,然后退出,下同
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(file);
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
Element old = isNameExists(doc, name);
if(old != null){
Element root = doc.getDocumentElement();
if(root.removeChild(old) != null){
// 把XML文档输出到指定的文件
FileOutputStream outStream = new FileOutputStream(file);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
((XmlDocument) doc).write(outWriter, "GB2312");
outWriter.close();
outStream.close();
return true;
}
}
return false;
}
//查找指定用户名是否存在,如果存在返回此节点,否则返回null
private static Element isNameExists(Document doc, String name)
throws Exception{
//先取根元素 students
Element root = doc.getDocumentElement();
// 取 student 元素列表
NodeList students = root.getElementsByTagName("student");
for (int i = 0; i < students.getLength(); i++) {
// 依次取每个 user 元素
Element student = (Element) students.item(i);
//找到了
if (name.equals(student.getAttribute("name"))) {
//System.out.println("I'm here");
//System.out.println(user);
return student;
}
}
return null;
}
}
class StudentInfo{
//
String name;
String sex;
int age;
//
public StudentInfo(){}
public StudentInfo(String name, String sex, int age) {
//super();
this.name = name;
this.sex = sex;
this.age = age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return name + " is a " + sex + ", and age is " + age;
}
}
附件是相关jar包
分享到:
相关推荐
在这个"xml解析实例"中,我们将探讨如何在VC++环境中创建一个DLL(动态链接库),该库能够解析自定义格式的XML数据,并在其他工程中调用这些功能。 首先,了解XML解析的基本概念至关重要。XML文档由一系列元素组成...
总之,XML解析实例为我们提供了实践和理解如何在代码中处理XML数据的机会。无论是选择DOM还是SAX,了解其工作原理和使用方式都是IT从业者必备的技能之一。通过学习和研究这个实例,我们可以加深对XML解析的理解,并...
总之,这个VB XML解析实例提供了一个基础平台,帮助开发者学习如何在VB环境下读取、解析XML文件,并将结构可视化。通过这个实例,你可以了解XML与VB之间的交互,以及如何使用DOM模型处理XML文档。实践这个例子,将有...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在软件开发、网络通信、数据存储等领域。...通过学习和实践这个实例,我们可以更深入地理解和掌握XML解析技术,并将其应用于实际项目中。
JSON解析可以借助Gson库,XML解析可以使用`XmlPullParser`或第三方库。在WebView中加载服务器返回的HTML内容,可以利用`loadData`或`loadDataWithBaseURL`方法。这些技术在Android开发中至关重要,能有效提升应用的...
接下来,我们需要创建一个`SAXParserFactory`实例,然后使用它来获取`SAXParser`,并设置XML解析器的配置。最后,我们调用`parse()`方法解析XML文件,并传入我们的事件处理器: ```java public static void parse...
总之,SAXDemo实例代码提供了一个基础的SAX解析XML文档的例子,对于学习和理解XML解析,特别是大型文件的处理,是非常有价值的。通过阅读和分析这个代码,你可以掌握如何使用SAX解析器解析XML,以及如何处理解析过程...
java四种xml解析实例和jar包,包括dom,sax,dom4j,jdom等方式 java四种xml解析实例和jar包,包括dom,sax,dom4j,jdom等方式 是学习Java的xml解析的好例子,包括相应的dom4j.jar,jdom.jar等,自己整理的,物超所值啊,...
JDOM是专门为Java设计的XML解析库,它提供了更直观的API,使得XML处理更像操作Java对象。JDOM基于DOM,但在性能和易用性上有所改进。我们可以使用`org.jdom2.Document`和`org.jdom2.input.SAXBuilder`来构建和解析...
本实例将介绍如何在iOS项目中使用KISSXML库进行XML解析。 KISSXML是一个强大的、Objective-C实现的XML解析库,它提供了XML解析和生成的功能,适用于iOS和macOS平台。导入KISSXML库到你的项目中,你可以通过简单的...
php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例php解析xml实例
二、Android中的XML解析实例 1. DOM解析实例: ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = ...
TinyXML是一个开源的轻量级XML解析库,适用于C++编程。它被设计为简单、易用且小巧,便于在嵌入式系统或资源有限的环境中使用。在本实例中,我们将探讨如何使用TinyXML库在Visual Studio 2008环境下解析XML文档。 ...
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
总结一下,PB11.5中的XML解析实例主要涵盖了以下几个方面: 1. DOM和SAX解析方式的介绍与选择。 2. 使用`IXMLDocument`接口加载、查询和操作XML。 3. `IXMLDOMElement`和`IXMLDOMAttribute`接口的使用,包括元素和...
本教程将详细介绍四种常见的XML解析方法,以帮助你更好地理解和处理XML数据。 1. DOM解析器(Document Object Model) DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点操作来访问和修改...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
本实例——“xml航班解析实例”,提供了一个全项目的压缩包,包含了源代码和注释,方便个人学习和理解XML解析在安卓应用中的具体应用。 在安卓应用中,XML解析主要分为两种方式:DOM(Document Object Model)解析...