java 读写xml_java读写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;}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值