java通过dom读写xml文件_java通过dom读写xml文件

要读的xml文件

李华姓名>

14年龄>

6287555电话>

学生>

张三姓名>

16年龄>

8273425电话>

学生>

学生花名册>

实例:

package zhg;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.Iterator;

import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Result;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerConfigurationException;

import javax.xml.transform.TransformerException;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.w3c.dom.Text;

public class test

{

Vector students_Vector;

private Vector readXMLFile(String file) throws Exception

{

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = dbf.newDocumentBuilder();

Document doc = builder.parse(file); //获取到xml文件

//下面开始读取

Element root = doc.getDocumentElement(); //获取根元素

NodeList students = root.getElementsByTagName("学生");

students_Vector = new Vector();

for(int i=0;i

{

//一次取得每一个学生元素

Element ss = (Element)students.item(i);

//创建一个学生的实例

student stu = new student();

stu.setSex(ss.getAttribute("性别"));

NodeList names = ss.getElementsByTagName("姓名");

Element e = (Element)names.item(0);

Node t = e.getFirstChild();

stu.setName(t.getNodeValue());

NodeList ages = ss.getElementsByTagName("年龄");

e = (Element)ages.item(0);

t = e.getFirstChild();

stu.setAge(Integer.parseInt(t.getNodeValue()));

students_Vector.add(stu);

}

return students_Vector;

}

//写入xml文件

public static void callWriteXmlFile(Document doc, Writer w,

String encoding) {

try {

Source source = new DOMSource(doc);

Result result = new StreamResult(w);

Transformer xformer = TransformerFactory.newInstance()

.newTransformer();

xformer.setOutputProperty(OutputKeys.ENCODING, encoding);

xformer.transform(source, result);

}

catch (TransformerConfigurationException e) {

e.printStackTrace();

}

catch (TransformerException e) {

e.printStackTrace();

}

}

private void writeXMLFile(String outfile)

{

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder builder=null;

try

{

builder = dbf.newDocumentBuilder();

}

catch(Exception e){}

Document doc = builder.newDocument();

Element root = doc.createElement("学生花名册");

doc.appendChild(root); //将根元素添加到文档上

//获取学生信息

for(int i=0;i

{

student s = (student)students_Vector.get(i);

//创建一个学生

Element stu = doc.createElement("学生");

stu.setAttribute("性别",s.getSex());

root.appendChild(stu);//添加属性

//创建文本年龄节点

Element age = doc.createElement("年龄");

stu.appendChild(age); //将age添加到学生节点上

Text tage = doc.createTextNode(String.valueOf(s.getAge()));

age.appendChild(tage); //将文本节点放在age节点上

//创建文本姓名节点

Element name = doc.createElement("姓名");

stu.appendChild(name);

Text tname = doc.createTextNode(s.getName());

name.appendChild(tname);

}

try {

FileOutputStream fos = new FileOutputStream(outfile);

OutputStreamWriter outwriter = new OutputStreamWriter(fos);

//((XmlDocument)doc).write(outwriter); //出错!

callWriteXmlFile(doc,outwriter,"gb2312");

outwriter.close();

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String args[])

{

String str = "zhg/student.xml";

test t = new test();

try

{

Vector v = t.readXMLFile(str);

Iterator it = v.iterator();

while(it.hasNext())

{

student s = (student)it.next();

System.out.println(s.getName()+"\t"+s.getAge()+"\t"+s.getSex());

}

}

catch(Exception e)

{

e.printStackTrace();

}

String outfile = "zhg/stucopy.xml";

t.writeXMLFile(outfile);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值