自己写的小程序,解析xml文件。但是对Element和Node 之间的区别。有一点不太明了。 还需要自己看API文档。
package com.util.XmlUtil;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
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.xml.sax.SAXException;
public class DomDemo implements XmlDocument {
private Document document;
public void init() {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
this.document = builder.newDocument();
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
}
}
@Override
public void createXml(String fileName) {
Element root = this.document.createElement("employees");
this.document.appendChild(root);
Element employee = this.document.createElement("employee");
Element name = this.document.createElement("name");
name.appendChild(this.document.createTextNode("任俊明"));
employee.appendChild(name);
Element sex = this.document.createElement("sex");
sex.appendChild(this.document.createTextNode("男"));
employee.appendChild(sex);
Element age = this.document.createElement("age");
age.appendChild(this.document.createTextNode("23"));
employee.appendChild(age);
root.appendChild(employee);
TransformerFactory tf = TransformerFactory.newInstance();
try {
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
System.out.println("生成xml文件成功");
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public Employee parseXml(String fileName) {
Employee ee = new DomDemo.Employee();
try {
// TODO Auto-generated method stub
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(fileName);
NodeList nodeList = document.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node employee = nodeList.item(i);
if (employee.getNodeType() != Node.TEXT_NODE) {
NodeList employeeInfo = employee.getChildNodes();
for (int j = 0; j < employeeInfo.getLength(); j++) {
Node info = employeeInfo.item(j);
if (info.getNodeType() != Node.TEXT_NODE) {
NodeList infoList = info.getChildNodes();
for (int k = 0; k < infoList.getLength(); k++) {
Node attribute = infoList.item(k);
if (attribute.getNodeType() != Node.TEXT_NODE) {
String attributeName = attribute
.getNodeName();
if (attributeName.equals("name")) {
ee.setName(attribute.getTextContent());
} else if (attributeName.equals("sex")) {
ee.setSex(attribute.getTextContent());
} else if (attributeName.equals("age")) {
ee.setAge(attribute.getTextContent());
}
}
}
}
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
return ee;
}
public List<Employee> parseXml2(String fileName) {
List<Employee> list = new ArrayList<Employee>();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(fileName);
NodeList nl = document.getElementsByTagName("employee");
for (int i = 0; i < nl.getLength(); i++) {
Employee ee = new DomDemo.Employee();
Element employee = (Element) nl.item(i);
Node nodeName = employee.getElementsByTagName("name").item(0);
String name = nodeName.getFirstChild().getNodeValue();
Node nodeSex = employee.getElementsByTagName("sex").item(0);
String sex = nodeSex.getFirstChild().getNodeValue();
Node nodeAge = employee.getElementsByTagName("age").item(0);
String age = nodeAge.getFirstChild().getNodeValue();
ee.setName(name);
ee.setSex(sex);
ee.setAge(age);
list.add(ee);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
String fileName = "employees.xml";
DomDemo dd = new DomDemo();
List<Employee> list = dd.parseXml2(fileName);
Iterator<Employee> it = list.iterator();
while (it.hasNext()) {
Employee ee = (Employee) it.next();
System.out.println(ee.getName());
System.out.println(ee.getSex());
System.out.println(ee.getAge());
}
// dd.init();
// dd.createXml("employees.xml");
/*
* Employee ee = dd.parseXml("employees.xml");
* System.out.println(ee.getName());
*/
}
public class Employee {
private String name;
private String sex;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
}
分享到:
相关推荐
DOM解析XML文件例子DOM解析XML文件例子DOM解析XML文件例子
java学习笔记——使用DOM解析XML和使用SAX解析XML
Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife
DOM解析XML 创建XML
XML DWR 解析dom 解析xml Ajax 杂乱的例子 学习笔记
dom4j 解析xml文件小例子 dom4j 解析xml文件小例子
用dom解析xml文件
java dom解析xml <?xml version="1.0" encoding="UTF-8"?> <Head> <FileVersion>010000</FileVersion> <FileLength>00000CC3</FileLength> <FileTime>20100629173405</FileTime> <KeyIndex>1...
DOM解析XML应用实例(入门经典案例),直接在Myeclipse值导入即可运行
java dom 解析 xml 实例 介绍w3c中的元素的用法,以及在解析xml过程中用到的API进行详细解释
android为我们提供了多种解析方式,DOM解析,代码操作简单,一直为解析xml文件的一个不错的选择
dom解析XML dom解析XML dom解析XMLdom解析XML dom解析XML
使用dom解析XML,演示了如何使用DOM的五个基本对象来解析xml。
在Java平台中如何来使用DOM解析xml文件,
很实用的一个dom解析xml实例,很容易上手
包括android代码实例以及个人对Dom解析xml文件的总结文档。
以一个实例来说明DOM解析XML文件的方法与过程。
DOM解析XML文档DOM解析XML文档DOM解析XML文档
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
完整的Oracle xmldom解析xml入参,经过测试,可以解析,成功入到数据表中。