解析XML文件

一、解析XML文件

(一)首先构建DocumentBuilder对象

可以从DocumentBuilderFactory中得到这个对象。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

(二)读入文件

File f = ...
Document doc = builder.pares(f);
或者
URL l = ...
Document doc = builder.parse(u);
亦或者
Inputstream in = ...
Document doc = builder.parse(in);

(三)分析文档

通过调用getDocumentElement,它将返回根元素。

Element root = doc.getDocumentElement();

例如:

<?xml version="1"?>
<font>
...
</font>

调用getDocumentElement方法,返回font元素。
调用getTagName方法可以返回元素的标签名。(如:root.getTagName,返回“font”)
调用getChildNodes方法,这个方法会返回一个NodeList的集合。
item方法,得到指定索引值的项。
getLength方法,提供项的总数。
DTD会自动剔除空白字符。
trim方法,会删除多余的空白字符。
调用getNextSibling方法,得到下一个兄弟节点。

for(Node childNode = element.getFirstChild();
childNode!= null;
childNode = childNode.getNextSibling()){
	....
}

getAttributes方法,返回一个NamedNodeMap对象,其中包含了描述属性的Node对象,同Nodelist一样遍历,NameNodeMap,通过调用getNodeName和GetNodeValue方法,得到属性名,属性值。
如果知道属性名直接可以拿到属性值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastXml是一个简单、高性能、极少内存消耗的基于xml pull机制的java xml解析器。性能最好的xml解析器:性能是VTD-XMl的3倍,是XPP3/MXP1的2倍,详见性能测试数据和测试代码 几乎不消耗额外的内存:内存消耗比XPP3/MXP1还要少很多 没有jar包依赖 jar包大小为18k,非常适合在移动互联网领域使用 FastXml的API与XMLPULL类似,但是要更简单一些,易于使用 支持namespace,但不校验schema 为什么FastXml这么快尽可能少的解码字节:往往xml文档中的很多字节都是ASCII范围,它们可以直接强转成char,而不需要解码,比如:标签名、属性名,大部分时候只需要对属性值和文本块进行解码即可。 注释、文档声明、DOCTYPE、无用的换行和空白通常不是我们关注的内容,所以这些内容自动被FastXml跳过了,使用API时更人性化。 当需要把某个属性值或者文本块内容转换为int、short、long时,不需要先把byte数组转化成string,然后再转化成int、short、long。FastXml直接把byte数组转换成对应的类型。 如果xml文档中有些标签内容你并不需要时,你可以跳过这些标签,你跳过的这部分将减少了字节解码,这在一些场景下能很好的帮助你提升性能。 FastXml类似XMLPULL一样,不校验文档schema和DTD,对文档的格式也不进行非常严格的校验:通常xml文档的格式都是正确的,当我们追求xml解析的最高性能时,就不需要对格式等内容进行及其严格的校验了。FastXml并不是完全没有校验,为了追求更好的性能,FastXml只是在解析过程中,对那些必须校验的地方进行校验。通常大部分的格式错误都能被校验出来。许可证Apache Licence, Version 2.0 标签:FastXml

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值