一、DOM解析XML
来源:互联网 发布:北京软件退税计算方法 编辑:程序博客网 时间:2024/06/05 01:58
为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM接口来操作这个树结构。
优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;
缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;
使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。
packageFourWayToAnalyticXml;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationExcep
importjavax.xml.transform.OutputKeys;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerConfiguration
importjavax.xml.transform.TransformerException;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
importorg.xml.sax.SAXException;
importInterface.XmlDocument;
publicclass DOMToAnalyticXml implements XmlDocument {
private Document document;
private String fileName;
public void init() {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
this.document = builder.newDocument();
} catch (ParserConfigurationExcep
System.out.println(e.getMessage());
}
}
public void createXml(String fileName) {
Element root = this.document_createElement_x_x_x("employees");
this.document.a(root);
Element employee = this.document_createElement_x_x_x("employee");
Element name = this.document_createElement_x_x_x("name");
name.a(this.document_createTextNode("qqqqq"));
employee.a(name);
Element sex = this.document_createElement_x_x_x("sex");
sex.a(this.document_createTextNode("m"));
employee.a(sex);
Element age = this.document_createElement_x_x_x("age");
age.a(this.document_createTextNode("30"));
employee.a(age);
root.a(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(newFileOutputStream(fileName));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
System.out.println("生成XML文件成功!");
} catch (TransformerConfiguration
System.out.println(e.getMessage());
} catch (IllegalArgumentException
System.out.println(e.getMessage());
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (TransformerException e) {
System.out.println(e.getMessage());
}
}
public void parserXml(String fileName) {
try {
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(fileName);
NodeList employees = document.getChildNodes();
for (int i = 0; i < employees.getLength(); i++){
Node employee = employees.item(i);
NodeList employeeInfo = employee.getChildNodes();
for (int j = 0; j < employeeInfo.getLength(); j++){
Node node = employeeInfo.item(j);
NodeList employeeMeta = node.getChildNodes();
for (int k = 0; k < employeeMeta.getLength(); k++){
System.out.println(employeeMeta.item(k).getNodeName()
+ ":" + employeeMeta.item(k).getTextContent());
}
}
}
System.out.println("解析完毕");
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (ParserConfigurationExcep
System.out.println(e.getMessage());
} catch (SAXException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DOMToAnalyticXml dom
dom.init();
dom.createXml("domparserXml");
dom.parserXml("domparserXml");
}
}
- 一、DOM解析XML
- 使用DOM解析XML(一)
- DOM解析XML(一)
- XML解析(一):DOM解析
- DOM解析xml练习(一)
- DOM解析XML文件实例(一)
- Android DOM 解析 XML样式一
- java解析与生成xml(一): Dom
- XML(一) DOM解析XML文档实例一
- XML DOM---解析xml dom
- 【XML】DOM解析XML
- 解析xml dom 解析
- xml解析 Dom解析
- XML初识(一)--使用DOM解析XML数据
- Java解析XML(一) 使用DOM读取XML文件
- XML解析技术初探(一):DOM解析
- xml的解析方式(一)DOM 解析
- XML基本概念解析(一) SAX、DOM、DTD和Schema
- 23种模式概述
- 23种设计模式的形象比喻
- 算法的时间复杂度和空间复杂度
- B树、B-树、B+树、B*树
- 附:XML文档建立与解析的接口
- 一、DOM解析XML
- 二、SAX解析XML
- Haxe特性杂谈
- 三、JDOM解析XML
- 四、DOM4J解析XML
- Myeclipse8.6_for_Spring性能优化…
- wegw
- sphinx使用初级
- springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序