`
tntxia
  • 浏览: 1510865 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java读写XML操作的代码

阅读更多

先定义一个简单的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的代码

    本篇文章将详细探讨如何使用Java进行XML的读写操作,主要包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)三种解析方式。 **DOM解析** DOM解析器将整个XML文档加载到...

    用java读取修改xml文件的代码实现

    本文将详细介绍如何使用Java来读取和修改XML文件,主要涉及以下几个核心知识点: 1. **DOM解析器**: Document Object Model(DOM)是一种将XML文档转换为内存中的树形结构的方法,使得可以遍历和修改XML文件。...

    用java读取xml文件的四种方法

    要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...

    Java读写xml java 读写xml文件操作, 简单易懂

    ### Java读写XML文件操作详解 在现代软件开发中,XML(可扩展标记语言)是一种广泛使用的数据交换格式,尤其在处理配置文件、数据存储以及跨平台数据交换时显得尤为重要。Java提供了多种读写XML文件的方法,包括SAX...

    java读取XML内容源代码

    在Java编程中,读取XML(eXtensible Markup Language)文件内容是一项常见的任务,尤其在处理配置数据、数据交换或者存储结构化信息时。XML因其可读性强、结构清晰的特点,被广泛应用于各种场景。本篇文章将详细介绍...

    java读取xml文件

    Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...

    java读写xml文件

    ### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...

    java解析xml字符串

    Java提供了多种库来解析和操作XML文档,其中JDOM(Java Document Object Model)是一个广泛使用的开源库,它提供了简单且强大的API来读取、创建和修改XML文档。 ### Java解析XML字符串 在给定的代码示例中,我们...

    java操作xml文件的一个简单代码

    为了深入理解这些概念,你可以参考Java的官方文档,学习每个API的用法,并通过实践编写代码来操作XML文件,例如,创建XML文件,读取XML文件,添加、删除和修改元素,验证XML结构等。同时,也可以查阅DOM4J、JDOM等第...

    java_xml_api,java操作XML文档

    StAX是介于SAX和DOM之间的解析方式,它也采用事件驱动,但允许开发者通过迭代器按需读取XML流,从而平衡了内存使用和灵活性。 6. XML Schema和DTD XML Schema和Document Type Definition (DTD)是用于定义XML文档...

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

    Java 实现 XML 解析 Word 文档代码实现 基于给定的文件信息,我们可以总结出以下知识点: 1. Java 实现 XML 解析 Word 文档 Java 可以使用多种方式来解析 Word 文档,包括使用 Apache POI 库、Java2Word 库等。...

    Xml.zip_JAVA读取xml_XML读取_java_saxreader

    通过以上代码,我们可以读取XML文件中的标签、属性和文本内容。请注意替换`path_to_your_xml_file.xml`为你的XML文件的实际路径。 在实际应用中,你可能需要根据具体需求对ContentHandler进行扩展,例如,将解析...

    java写XML文件和读取XML文件

    在Java编程中,处理XML文件是常见的需求,包括创建XML文件、读取XML文件以及解析XML内容。下面将详细介绍Java如何进行XML文件的操作。 一、Java写XML文件 1. 使用DOM(Document Object Model)API: DOM是W3C推荐...

    JAVA高手解析XML配置文件的读取操作.pdf

    JAVA 高手解析 XML 配置文件的读取操作 本文主要讲解了 Java 中如何读取 XML 配置文件,并对 XML 解析器进行了分类,分别介绍了 DOM 和 SAX 两种解析方式的特点和使用场景,并提供了一个使用 SAX 解析器读取 XML ...

    java 解析xml 多级

    而SAX解析器采用事件驱动的方式,逐行读取XML文件,适合处理大型XML文件以避免内存消耗。 对于多级XML,DOM解析更便于操作。以下是一个使用Java DOM解析XML的步骤: 1. 引入必要的库: 需要引入`javax.xml....

    java 读取xml文件生成树形图

    在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...

    java读取xml文件生成文件

    以下是一个基本的Java代码示例,演示了如何读取XML文件: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c....

    java中读写XML文件

    首先,你需要定义Java类,然后使用`jaxb绑定`生成相应的XML代码。例如: ```java // 假设我们有一个Employee类 Employee employee = new Employee(); // 设置属性... // 创建marshaller并序列化 JAXBContext ...

    java操作XML实例代码

    * 读取XML文件 * @return Document对象 * @throws DocumentException */ public void getXmlFile() throws DocumentException { SAXReader reader = new SAXReader(); File file = new File(filePath); ...

Global site tag (gtag.js) - Google Analytics