本文介绍了如何利用DOM(即Document Object Model文档对象模型)解析xml文件。

首先有一个xml文件:

<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<User><city country="中国">南京</city><name>刘文文</name><age>25</age><sex>男</sex><occupation>程序员</occupation>
</User>

利用DOM解析这个xml文件:

import java.io.ByteArrayInputStream;
import java.io.InputStream;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;
import org.w3c.dom.NodeList;public class ParsingXml {public static void main(String args[]) {String xml="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n" + "<User>\r\n" + "  <city country=\"中国\">南京</city>\r\n" + "   <name>刘文文</name>\r\n" + "    <age>25</age>\r\n" + "   <sex>男</sex>\r\n" + "    <occupation>>程序员</occupation>\r\n" + "</User>\r\n" + "";DOMParsingXml(xml);}public static void DOMParsingXml(String xml) {try {byte[] b=xml.getBytes();InputStream inp=new ByteArrayInputStream(b);DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();Document doc=builder.parse(inp);NodeList nl=doc.getElementsByTagName("User");for (int i = 0; i < nl.getLength(); i++) {System.out.println("country:" + doc.getElementsByTagName("city").item(i).getAttributes().getNamedItem("country").getNodeValue());System.out.println("city:  " + doc.getElementsByTagName("city").item(i).getFirstChild().getNodeValue());System.out.println("name:  " + doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());System.out.println("age:  " + doc.getElementsByTagName("age").item(i).getFirstChild().getNodeValue());System.out.println("sex:  " + doc.getElementsByTagName("sex").item(i).getFirstChild().getNodeValue());System.out.println("occupation:  " + doc.getElementsByTagName("occupation").item(i).getFirstChild().getNodeValue());}} catch (Exception e) {System.out.println(e.getMessage());}}
}

可以看到DOM解析xml文件是可以得到xml的属性值的,但是这样解析的xml有一个问题,就是当标签里的值为空的时候,解析xml文件就会报错为:java.lang.NullPointerException(空指针异常),那么我们需要在解析值可能为空的标签的时候加一次判断,是否为标准的dom格式,如果不是,则赋值为空(null),如下所示:

if (标签名 instanceof Element) {//则为标准形式,可以取到值
}else{//在此处赋值为空
}

运行这个程序,可以看到控制台输入结果为:

java中DOM解析xml文件相关推荐

  1. Java中Dom解析XML

    DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息: 这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内 ...

  2. Java中DOM4J解析xml文件浅析

      DOM4J解析它是JDOM的一种智能分支.它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持.XML Schema支持以及用于大文档或流化文档的基于事件的处理.它还提供了构建文档表 ...

  3. 在java中在线解析XML文件内容

    这里的天气属性有很多,可以根据自己的需求获取天气属性 这里用到了org.json的jar包,因为要使用XML属性解析数据,还有alibab.JAONObject的jar包  /*** 天气预报-更新* ...

  4. Android程序解析xml至文档中,Android开发之DOM解析xml文件的方法

    本文实例讲述了Android中DOM解析xml文件的方法.分享给大家供大家参考,具体如下: 一.在assets文件中写xml文件 李明 30 李向梅 25 二.在service中写一个DOM解析的操作 ...

  5. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  6. Android学习笔记---Android平台1.使用dom解析xml文件

    1.使用dom解析xml文件 除了使用 SAX可以解析XML文件,大家也可以使用熟悉的DOM来解析XML文件. DOM解析XML文 件时,会将XML文件的所有内容以文档树方式存放在内存中,然后允许您使 ...

  7. java dom解析xml路径中文_Java如何基于DOM解析xml文件

    一.Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath 此文针对其中的DOM方法具体展开介绍及代码分析 sax.dom是两种对xml文档进行解析的方法(没有具体实 ...

  8. 【java】jdom解析xml文件

    java中有四种分别解析xml文件.分别是,DOM,SAX,DOM4J,JDOM四种.我第一篇就介绍用Jdom解析XML.本人觉得这四种学习其中一种即可.其余三中解析思想差不了多少.况且这四种介绍优缺 ...

  9. java使用DOM4j解析XML文件

    1.简介 dom4j是java中的XML API,性能优异.功能强大.开放源代码. 也是所有解析XML文件方法中最常用的! 2.代码实操 准备需要j的ar包添加到lib目录下,dom4j-2.1.1. ...

最新文章

  1. WEB 打印的相关技术分析
  2. Nature Microbiology:全球污水处理厂细菌群落揭秘!
  3. fedora利用vmlinuz和initrd制作linux启动u盘,Fedora 17的U盘安装方法
  4. Android 如何快速写满存储空间
  5. 编程方法学7:循环与一半
  6. QT的QPair类的使用
  7. PXE高效批量安装和Kickstart无人值守安装——真正完成批量自动安装
  8. python编辑器安装视频教程_Python安装教程(推荐一款不错的Python编辑器)
  9. Python MetaClass
  10. cocos2d pod_cocos2d 和 cocos3d的版本问题
  11. BSD/MIT/Apache许可证印象尚可
  12. ArrayList使用
  13. Netflix:如何打造开放协作的实时 ETL 平台?
  14. iOS autoreleasePool 深入理解
  15. Python调用阿里API进行车牌识别
  16. 杂谈——TCP/IP 协议栈详解
  17. 重磅发布: 营销数据中台白皮书(附全文下载)
  18. html文本编码声明,黑帽seo技术之文字HTML编码变体的实现解密
  19. 带你详细入门华为云会议
  20. 数据透视表+函数搞定Excel中的非重复计数

热门文章

  1. 恶意软件分析在线沙箱链接(国内)
  2. 德州仪器/TI EDI – DESADV
  3. PCL下使用区域增长算法进行点云平面分割的实现
  4. 铁甲雄心机器人冠军_中英美三国机器人争霸!《铁甲雄心》冠军花落谁家?
  5. 布林线应用的四条法则
  6. 关于虚拟磁带库(转自51cto)
  7. [cygwin]在右键中添加cygwin命令行快捷方式
  8. 前端中关于HTML标签label的属性for的理解
  9. 运动会管理系统c语言n-s流程图,设计一个运动会管理系统.ppt
  10. 扣扣禁止360破解方法