您的位置:首页 > 编程语言 > Java开发

java解析XML的三种方法

2015-11-26 14:06 302 查看

java解析XML的三种方法

1.SAX事件解析

?
  

2.Dom加载解析

?
  

3.dom4j解析

 

package com.wzh.dom4j;

import java.io.FileOutputStream;

import java.sql.DatabaseMetaData;

import java.util.Iterator;

import java.util.List;

import org.dom4j.*;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

public class Dom4jHandler {

public void add() throws Exception {

// 1.创建一个Document

Document document = DocumentHelper.createDocument();

// 2.给Document添加数据

Element root = document.addElement("DataSource");

// 添加注释

root.addComment("这是注释信息");

// 在root根节点下面添加一个子节点

Element database = root.addElement("database");

database.addAttribute("name", "mysql");

database.addAttribute("version", "5.0");

// 添加子节点

database.addElement("driver").setText("com.mysql.jdbc.Driver");

database.addElement("url")

.setText("jdbc:mysql://localhost:3306/myjdbc");

database.addElement("user").setText("root");

database.addElement("password").setText("root");

// 3.将Document写出文件

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding("utf-8");

// FileOutputStream默认生成的路径在根路径

XMLWriter xw = new XMLWriter(new FileOutputStream("db.xml"), format);

xw.write(docum
9954
ent);

xw.close();

}

public void update(String fileName) throws Exception {

// sax解析器

SAXReader saxReader = new SAXReader();

// 读到对象

Document document = saxReader.read(this.getClass().getResourceAsStream(

"/" + fileName));

Element root = document.getRootElement();

List<Element> databases_node = root.elements("database");

for (Element database_node : databases_node) {

if (database_node.attributeValue("name").equalsIgnoreCase("mysql")) {

System.out.println("old:"

+ database_node.attributeValue("name"));

database_node.attribute("name").setText("Oracle");

System.out.println("update:"

+ database_node.attributeValue("name"));

database_node.element("driver").setText("oracel");

database_node.element("url").setText("jdbc");

// 删除password节点

database_node.remove(database_node.element("password"));

// 删除属性

database_node.remove(database_node.attribute("version"));

}

}

OutputFormat format = OutputFormat.createPrettyPrint();

format.setEncoding("utf-8");

// FileOutputStream默认生成的路径在根路径

XMLWriter xw = new XMLWriter(new FileOutputStream("db2.xml"), format);

xw.write(document);

xw.close();

}

public void read(String fileName) throws Exception {

// sax解析器

SAXReader saxReader = new SAXReader();

// 读到对象

Document document = saxReader.read(this.getClass().getResourceAsStream(

"/" + fileName));

Element root = document.getRootElement();

System.out.println("根节点:" + root.getName());

// List<Element> childElements=root.elements();

List<Element> childElements = root.elements("database");

for (Element child : childElements) {

// 获取属性 不知道属性名称时的遍历方法

List<Attribute> attributes = child.attributes();

// for (Attribute attribute : attributes) {

// System.out.println(attribute.getName()+":"+attribute.getValue());

// }

String name = child.attributeValue("name");

// String version = child.attributeValue("version");

String version = child.attribute("version").getValue();

System.out.println(name + ":" + version);

// //获取子节点

// List<Element> childs=child.elements();

// for (Element element : childs) {

// System.out.println(element.getName()+":"+element.getText());

// }

System.out.println(child.elementText("driver"));

System.out.println(child.element("url").getText());

System.out.println(child.elementTextTrim("user"));

System.out.println(child.element("password").getTextTrim());

}

}

public static void main(String[] args) throws Exception {

// new Dom4jHandler().read("data-source.xml");

// new Dom4jHandler().add();

new Dom4jHandler().update("data-source.xml");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml java