xml文档的解析和生成(一)
来源:互联网 发布:安卓模拟器mac 编辑:程序博客网 时间:2024/06/11 04:43
xml文档主要有两种解析方式,DOM接口或SAX接口解析。
Dom解析示例:
1.建立DocumentBuilderFactory
2.建立DocumentBuilder
3.建立Document
4.建立NodeList
5.进行xml信息读取
xml文件放在D盘,为dom_demo_02.xml
<?xml version="1.0" encoding="GBK"?>
<addresslist>
<linkman>
<name> 张三 </name>
<email>1522255555@qq.com</email>
</linkman>
<linkman>
<name> 李四 </name>
<email>15222534355@qq.com</email>
</linkman>
</addresslist>
解析代码为:
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
* DOM解析xml文件
* @author win
*
*/
public class DomDemo01 {
/**
* @param args
*/
public static void main(String[] args) {
//1.建立DocumentBuilderFactory,用于取得DocumentBuilder
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//2.通过DocumentBuilderFactory取得DocumentBuilder
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
//3.定义Document接口对象,通过DocumentBuilder类进行DOM树的转换操作
Document doc = null;
try {
doc = builder.parse("D:"+File.separator+"dom_demo_02.xml");
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//4.查找name节点
NodeList nl = doc.getElementsByTagName("linkman");
//输出NodeList中第一个子节点中的文本内容
for(int x=0;x<nl.getLength();x++){
Element e = (Element) nl.item(x);
System.out.println("姓名:"+e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
System.out.println("姓名:"+e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());
}
//System.out.println("姓名:"+nl.item(0).getFirstChild().getNodeValue());
}
}
生成xml文件代码:
package com.hbut.xml;
import java.io.File;
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;
/**
* 生成xml文件
* @author win
*
*/
public class DomDemo03 {
public static void main(String[] args) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try {
builder =factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
Document doc = null;
doc = builder.newDocument();
//建立各个节点
Element addresslist = doc.createElement("addresslist");
Element linkname = doc.createElement("linkname");
Element name = doc.createElement("name");
Element email = doc.createElement("email");
//设置各个操作节点,为节点添加文本
name.appendChild(doc.createTextNode("李兴华"));
email.appendChild(doc.createTextNode("21223232@qq.com"));
//设置节点关系
linkname.appendChild(name);
linkname.appendChild(email);
addresslist.appendChild(linkname);
doc.appendChild(addresslist);
//输出文档到文件中
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = null;
try {
t = tf.newTransformer();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
}
t.setOutputProperty(OutputKeys.ENCODING, "GBK");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("D:"+File.separator+"output.xml"));
try {
t.transform(source, result);
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
- xml文档的解析和生成(一)
- 标准XML解析与文档生成(一)
- 四种生成和解析XML文档的方法详解
- 四种生成和解析XML文档的方法详解
- XML文档的四种生成和解析方法详解
- 四种生成和解析XML文档的方法
- 四种生成和解析XML文档的方法
- 四种生成和解析XML文档的方法详解
- .DOM生成和解析XML文档
- DOM生成和解析XML文档
- SAX生成和解析XML文档
- DOM4J生成和解析XML文档
- DOM生成和解析XML文档
- DOM4J生成和解析XML文档
- DOM4J生成和解析XML文档
- Dom4j解析和生成XML文档
- Dom解析和生成XML文档
- SAX解析和生成XML文档
- Java编码浅析(注意区分三个概念)
- 暑假第三场F
- 重新定向输出流,实现java程序日志功能。
- poj 3131 双向搜索+hash判重
- 在Gentoo下使用UTF-8 中文
- xml文档的解析和生成(一)
- Android开发:ListView加上长按事件
- Unity 网络请求(1)
- Windows下构建robotium+jenkins+TMTS可持续集成自动化测试
- VS 2010工程新手学习
- Oracle ADDM
- java中的三种排序方法使用:选择排序,冒泡排序,sort方法排序。
- 读书笔记_学习太过浮躁
- buffer cache理解(3)