会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
android开发实例
递归方式 DOM 解析(parse) XML
friends.xml
<span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?> <friends date="2012"> <!--此处为注释--> <friend id="1"> <姓名>小红</姓名> <QQ>123456789</QQ> </friend> <friend> <姓名>小平</姓名> <QQ>12345678</QQ> </friend> <friend> <姓名 mark="hello">小敏</姓名> <QQ>1234567</QQ> </friend> <friend> <姓名>小良</姓名> <QQ>987654321</QQ> </friend> <friend> <姓名>小健</姓名> <QQ>98765432</QQ> </friend> </friends> </span>
DOM parse XML
<span style="font-size:16px;">import java.io.File ; import javax.xml.parsers.DocumentBuilderFactory ; import javax.xml.parsers.DocumentBuilder ; import org.w3c.dom.Element ; import org.w3c.dom.Document ; import org.w3c.dom.NamedNodeMap ; import org.w3c.dom.NodeList ; import org.w3c.dom.Attr ; import org.w3c.dom.Node ; import org.w3c.dom.Comment ; //利用 递归 dom 解析任何xml文档,把xml文档加载到内存,占用内存大,可随机访问 public class RecursionDOM_XML { public static void main(String[] args) throws Exception { //1.获取dom解析器工厂 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance() ; //2.获取具体的dom解析器 DocumentBuilder db = dbf.newDocumentBuilder() ; //获取xml文档的 根节点 Document document = db.parse(new File("friends.xml") ); //获取文档的 根元素节点 Element e = document.getDocumentElement() ; parseXML(e) ; } public static void parseXML(Element element) { //获取 元素节点 的 信息 String name = element.getNodeName() ; System.out.print("< " + name) ; //获取此元素节点的属性 NamedNodeMap map = element.getAttributes() ; //获取目前element元素节点下的 孩子节点(包括空格)</span>
<span style="font-size:16px;"> NodeList child = element.getChildNodes() ; if (null != map) { for (int i = 0; i < map.getLength(); i++ ) { Attr attr = (Attr)map.item(i) ; String name1 = attr.getName() ; String value1 = attr.getValue() ; System.out.print(" " + name1 +"=\"" + value1 +"\"") ; } } System.out.print(" >") ; for (int j = 0; j < child.getLength() ;j++ ) { Node node = child.item(j) ; //判断该节点是不是 元素节点 ,递归路口 if (node.getNodeType() == Node.ELEMENT_NODE) { //开始递归 parseXML((Element)node) ; } //判断该节点是不是 文本,递归出口 else if (node.getNodeType() == Node.TEXT_NODE) { System.out.print(node.getNodeValue() + "") ; } //判断该节点是不是 注释 else if (node.getNodeType() == Node.COMMENT_NODE) { System.out.print("<!--"); Comment comment = (Comment)node ; //注释内容 String data = comment.getData() ; System.out.print(data); System.out.print("-->"); } } System.out.println("</" + name + ">" ) ; } }</span>
posted on
2012-02-26 01:46
android开发实例
阅读(
396
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
导航
博客园
首页
新随笔
联系
订阅
管理
公告