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

java通过dom读写xml文件

要读的xml文件

encoding="GB2312"?>

"男">

李华姓名>

14年龄>

学生>

性别 =

"男">

张三姓名>

16年龄>

学生>

学生花名册>

package xml;

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 DomTest {

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_r("学生");

students_Vector = new

Vector();

for (int i = 0; i < students.getLength(); i++)

{

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

Element ss =

(Element) students.item(i);

// 创建一个学生的实例

student stu = new

student();

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

NodeList names =

ss.getElementsByTagName_r("姓名");

Element e = (Element)

names.item(0);

Node t =

e.getFirstChild();

stu.setName(t.getNodeValue());

NodeList ages =

ss.getElementsByTagName_r("年龄");

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 <

students_Vector.size(); i++) {

student s = (student)

students_Vector.get(i);

//

创建一个学生

Element stu =

doc.createElement("学生");

stu.setAttribute("性别",

s.getSex());

root.appendChild(stu);//

添加属性

// 创建文本姓名节点

Element name =

doc.createElement("姓名");

stu.appendChild(name);

Text

tname =

doc.createTextNode(s.getName());

name.appendChild(tname);

//创建文本年龄节点

Element

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

stu.appendChild(age); //

将age添加到学生节点上

Text tage =

doc.createTextNode(String.valueOf(s.getAge()));

age.appendChild(tage);

// 将文本节点放在age节点上

}

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 =

"xml/student.xml";

DomTest t = new DomTest();

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 =

"xml/stucopy.xml";

t.writeXMLFile(outfile);

}

}

class student{

private String sex;

private String

name;

private int age;

public int getAge() {

return

age;

}

public void setAge(int age) {

this.age =

age;

}

public void setSex(String s){sex=s;}

public

String getSex(){return sex;}

public void setName(String n){name=n;}

public String

getName(){return name;}

}

原文:http://www.cnblogs.com/muyuhu/p/3661872.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值