-
07
-
30
先定义一个简单的input.xml
结构,让java
进行input.xml
的读取和重新输出为output.xml
input.xml
格式:
<?xml
version="1.0" encoding="gb2312"?>
<学生花名册>
<学生>
<姓名>李丽</姓名>
<性别>女</性别>
</学生>
<学生>
<姓名>刘畅</姓名>
<性别>男</性别>
</学生>
</学生花名册>
为标记我们定义相关的studentBean:
public class StudentBean {
private String sex;
private String name;
public void setSex(String s){sex=s;}
public String getSex(){return sex;}
public void setName(String n){name=n;}
public String getName(){return name;}
}
我们定义一个XMLTest类,包含2个操作,一个读取xml
,一个写xml
文件,并实现测试main函数。
package test;
import java
.io.FileOutputStream;
import java
.io.IOException;
import java
.util.Vector;
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.NodeList;
import com.sun.org.apache.xml
.internal.serialize.OutputFormat;
import com.sun.org.apache.xml
.internal.serialize.XMLSerializer;
public class XMLTest {
private Vector student_vector;
public XMLTest()
{
if(student_vector==null)
{
student_vector=new Vector();
}
}
public void readXMLFile(String location)
{
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(location);
}catch(Exception e)
{
System.err.println(e);
System.exit(1);
}
Element root=doc.getDocumentElement(); //root为"学生印花名"节点
NodeList students=root.getElementsByTagName("学生"); //返回“学生”节点集合
//为每一个读入的学生信息建立对应的studentBean对象,设置对象信息
for(int i=0;i<students.getLength();i++)
{
Element student=(Element)students.item(i);
StudentBean studentBean=new StudentBean();
//这里实现不是很合理,java
的nodelist没有根据tag寻找子节点的方法,以后完善
studentBean.setName(student.getChildNodes().item(1).getTextContent());
//item(3)得到的是学生的性别节点,java
把</姓名>也作为了一个子节点处理
studentBean.setSex(student.getChildNodes().item(3).getTextContent());
//保存学生对象到vector容器中
student_vector.add(studentBean);
}
}
//进行document操作首先实例化documentbuilderfactory,然后实例化documentbuilder,最后根据它得到document
public void writeXMLFile(String outFile)//throws Exception
{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=null;
try{
db=dbf.newDocumentBuilder();
}catch(Exception pce){
System.err.println(pce);
System.exit(1);
}
Document doc=db.newDocument();
//在doc中创建"学生花名册"tag作为根节点
Element root=doc.createElement("学生花名册");
doc.appendChild(root);
for(int i=0;i<student_vector.size();i++)
{
StudentBean student=(StudentBean)student_vector.get(i);
Element studentNode=doc.createElement("学生");
root.appendChild(studentNode);
//studentNode.setAttribute("姓名", student.getName());
//studentNode.setAttribute("性别", student.getSex());
Element stuNameNode=doc.createElement("姓名");
stuNameNode.appendChild(doc.createTextNode(student.getName()));
studentNode.appendChild(stuNameNode);
Element stuSexNode=doc.createElement("性别");
stuSexNode.appendChild(doc.createTextNode(student.getSex()));
studentNode.appendChild(stuSexNode);
}
//用xmlserializer把document的内容进行串化
FileOutputStream os=null;
try{
OutputFormat outformat=new OutputFormat(doc);
os=new FileOutputStream("output.xml
");
XMLSerializer xmlSerilizer=new XMLSerializer(os,outformat);
xmlSerilizer.serialize(doc);
}catch(Exception e)
{
System.out.println("create xml
failed...\n");
}
//功能同xmlSerializer,最后运行效果相同
/*
FileOutputStream outStream=null;
try{
outStream=new FileOutputStream(outFile);
}catch(Exception e)
{
System.err.println(e);
System.exit(1);
}
OutputStreamWriter outWriter=new OutputStreamWriter(outStream);
//doc.write(outWriter,"GB2312");
callWriteXMLFile(doc,outWriter,"GB2312");
try{
outWriter.close();
outStream.close();
}catch(Exception e)
{
System.err.println(e);
System.exit(1);
}
}
private void callWriteXMLFile(Document doc,OutputStreamWriter w,String encoding)
{
try{
Source source=new DOMSource(doc);
Result ret=new StreamResult(w);
Transformer xformer=TransformerFactory.newInstance().newTransformer();
xformer.setOutputProperty(OutputKeys.ENCODING,encoding);
xformer.transform(source,ret);
}catch(TransformerConfigurationException e)
{
e.printStackTrace();
}
catch(TransformerException e)
{
e.printStackTrace();
}
}*/
}
public static void main(String[] args)
{
XMLTest xmlTest=new XMLTest();
System.out.println("开始读xml
文件...");
xmlTest.readXMLFile("Input.xml
");
System.out.println("读入完毕,开始写output.xml
文件");
xmlTest.writeXMLFile("Output.xml
");
System.out.println("写入完成");
}
}
分享到:
相关推荐
#### 三、Java读取XML文件 对于XML文件的读取,我们可以采用Java标准库中的`BufferedReader`配合`InputStreamReader`的方式来进行处理。这样可以在读取文件的同时指定正确的字符编码,从而避免乱码问题。 ```java ...
### Java读写XML文件操作详解 在现代软件开发中,XML(可扩展标记语言)是一种广泛使用的数据交换格式,尤其在处理配置文件、数据存储以及跨平台数据交换时显得尤为重要。Java提供了多种读写XML文件的方法,包括SAX...
要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...
对于简单的XML操作,JAXB提供了一种简单而高效的方式。首先,需要为XML元素创建对应的Java类,然后使用`javax.xml.bind.JAXBContext`和`Unmarshaller`进行解码,使用`Marshaller`进行编码。 4. **DOM4J**: DOM4J...
Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...
### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...
本项目案例“java对xml操作的项目案例”深入探讨了如何使用Java来读取、修改和写入XML文件。下面将详细阐述相关知识点。 一、Java与XML的交互 1. DOM解析器:Document Object Model (DOM) 是一种将整个XML文档加载...
本文将深入探讨如何使用Java来读取XML数据。 首先,我们需要了解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成。每个XML文档都有一个根元素,其他元素则嵌套在根...
Java提供了多种库来解析和操作XML文档,其中JDOM(Java Document Object Model)是一个广泛使用的开源库,它提供了简单且强大的API来读取、创建和修改XML文档。 ### Java解析XML字符串 在给定的代码示例中,我们...
使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...
java从xml中读入数据并存入到sqlserver2005数据库中
本教程将重点介绍如何使用SAXReader在Java中读取XML文件。 SAXReader是JDOM库中的一个类,它实现了SAX解析器接口,适用于处理大型XML文档,因为它不会将整个XML文档加载到内存中,而是采用事件驱动的方式,逐个处理...
StAX是介于SAX和DOM之间的解析方式,它也采用事件驱动,但允许开发者通过迭代器按需读取XML流,从而平衡了内存使用和灵活性。 6. XML Schema和DTD XML Schema和Document Type Definition (DTD)是用于定义XML文档...
而SAX解析器采用事件驱动的方式,逐行读取XML文件,适合处理大型XML文件以避免内存消耗。 对于多级XML,DOM解析更便于操作。以下是一个使用Java DOM解析XML的步骤: 1. 引入必要的库: 需要引入`javax.xml....
在Java编程中,处理XML文件是常见的需求,包括创建XML文件、读取XML文件以及解析XML内容。下面将详细介绍Java如何进行XML文件的操作。 一、Java写XML文件 1. 使用DOM(Document Object Model)API: DOM是W3C推荐...
JAVA 高手解析 XML 配置文件的读取操作 本文主要讲解了 Java 中如何读取 XML 配置文件,并对 XML 解析器进行了分类,分别介绍了 DOM 和 SAX 两种解析方式的特点和使用场景,并提供了一个使用 SAX 解析器读取 XML ...
Java XML读写操作是开发过程中常见的一项任务,尤其在处理配置文件、数据交换或存储结构化数据时。这里我们将深入探讨DOM、SAX、JDOM和DOM4J这四种主要的XML处理方式,并通过具体例子来理解它们的工作原理和用法。 ...
在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...
在Java编程中,读取XML(eXtensible Markup Language)文件内容是一项常见的任务,尤其在处理配置数据、数据交换或者存储结构化信息时。XML因其可读性强、结构清晰的特点,被广泛应用于各种场景。本篇文章将详细介绍...