java解析xml二种方法
配置文件为:
<?xml version="1.0" encoding="utf-8"?>
<config>
<point name="test1">
<name>zhang3</name>
<address>abcdefg</address>
<email>a@b.c</email>
</point>
</config>
程序中使用如下:
public static void main(string[] args) {
try {
saxreader reader = new saxreader();
document document = reader.read(new file("src/config.xml"));
element root = document.getrootelement();
for(iterator it=root.elementiterator();it.hasnext();){
element element = (element) it.next();
system.out.println(element.elementtext("name") + element.elementtext("address") + element.elementtext("email"));
}
} catch (documentexception e) {
e.printstacktrace();
}
}
实例二
xml 文件格式如下:
<?xml version="1.0" encoding="gb2312"?>
<result>
<value>
<no>a1234</no>
<addr>四川省xx县xx镇xx路x段xx号</addr>
</value>
<value>
<no>b1234</no>
<addr>四川省xx市xx乡xx村xx组</addr>
</value>
</result>
jsp教程 文件:
<%@ page contenttype="text/html; charset=gb2312" %>
<%@ page import="com.test.*"%><html>
<body>
<%
string args[]={""};
myxmlreader.main(args);
%>
</body>
</html>
测 试
首先出场的是 dom(jaxp crimson 解析器)
dom 是用与平台和语言无关的方式表示 xml 文档的官方 w3c 标准。dom 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 dom 被认为是基于树或基于对象的。dom 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 sax 那样是一次性的处理。dom 使用起来也要简单得多。
另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如 sax。
bean文件:
package com.test;
import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;public class myxmlreader{
public static void main(string arge[]){
long lasting =system.currenttimemillis();
try{
file f=new file("data_10k.xml");
documentbuilderfactory factory=documentbuilderfactory.newinstance();
documentbuilder builder=factory.newdocumentbuilder();
document doc = builder.parse(f);
nodelist nl = doc.getelementsbytagname("value");
for (int i=0;i<nl.getlength();i++){
system.out.print("车牌号码:" + doc.getelementsbytagname("no").item(i).getfirstchild().getnodevalue());
system.out.println(" 车主地址:" + doc.getelementsbytagname("addr").item(i).getfirstchild().getnodevalue());
}
}catch(exception e){
e.printstacktrace();
}
system.out.println("运行时间:"+(system.currenttimemillis() - lasting)+" 毫秒");
}
}