dom4j解析xml原理详解

使用Dom4j解析XML dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它. 对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Ja 阅读详情

dom4j组件配合xPath解析xml,两个重点:dom4j对xml的操作;xPath对xml节点的匹配。


一、dom4j操作xml:

常用到的对象:

SAXReader:读取xml文件到Document树结构文件对象。

Document:是一个xml文档对象树,类比Html文档对象。具有跟节点、元素节点、父节点、子节点;属性节点、文本节点、注释节点;有id、class等这些属性。

Element:元素节点。通过Document对象可以查找单个元素,可以对元素节点进行常见的ACID操作。其中查询是最基本的应用,使用对象的方法,配合xPath的路径匹配解析模式。


常用的方法:


获取dom树的方法:

SAXReader reader = new SAXReader();

InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");

Document doc = reader.read(in);

读取跟节点的方法:

doc.getRootElement();

获取某个节点的方法:

Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");

Element beanElt=(Element)doc.selectSingleNode("//bean[@id=\""+c.getName()+"\"]");

获取某类节点集合的方法:

List daoFactorylist = doc.selectNodes("/config/dao-factory/*");


常见的使用:读取xml、获取跟节点、遍历节点。

1、读取文档:

[java]  view plain  copy
  1. <span style="font-size:18px;">   private File inputXml;  
  2.      public Document getDocument() {  
  3.             SAXReader saxReader = new SAXReader();  
  4.             Document document = null;  
  5.             try {  
  6.                 document = saxReader.read(inputXml);  
  7.             } catch (DocumentException e) {  
  8.                 e.printStackTrace();  
  9.             }  
  10.             return document;  
  11.          }</span>  

2、获取跟节点:

[java]  view plain  copy
  1. <span style="font-size:18px;">    public Element getRootElement() {  
  2.        return getDocument().getRootElement();  
  3.     }</span>  

3、枚举根节点下的所有节点:

[java]  view plain  copy
  1. <span style="font-size:18px;">  Element root = getRootElement();  
  2.       
  3.     for (Iterator ie = root.elementIterator(); ie.hasNext();) {  
  4.             System.out.println("======");  
  5.             Element element = (Element) ie.next();  
  6.             System.out.println(element.getName());  
  7.     }  
  8. </span>  

4、枚举所有属性节点:

[java]  view plain  copy
  1. <span style="font-size:18px;"> for (Iterator ia = element.attributeIterator(); ia.hasNext();) {  
  2.               Attribute attribute = (Attribute) ia.next();  
  3.               System.out.println(attribute.getName() + ":"  
  4.                      + attribute.getData());  
  5.     }</span>  

5、枚举当前节点下的所有子节点:
[java]  view plain  copy
  1. <span style="font-size:18px;"> for (Iterator ieson = element.elementIterator(); ieson.hasNext();) {  
  2.               Element elementSon = (Element) ieson.next();  
  3.               System.out.println(elementSon.getName() + ":"  
  4.                      + elementSon.getText());  
  5.  }</span>  

6、获取并遍历某个节点下的所有子节点: 
[java]  view plain  copy
  1. <span style="font-size:18px;">                      List daoFactorylist = doc.selectNodes("/config/dao-factory/*");  
  2.               
  3.               
  4.             for (int i=0; i<daoFactorylist.size(); i++) {  
  5.                 Element daoFactoryElt = (Element)daoFactorylist.get(i);  
  6.                 String tagName = daoFactoryElt.getName();  
  7.                 String tagText = daoFactoryElt.getText();  
  8.                 System.out.println("读取DaoFactory-->>" + tagText);  
  9.                   
  10.                 //放入到Map中  
  11.                 daoFactoryMap.put(tagName, tagText);  
  12.                   
  13.                   
  14.             }  
  15. </span>  


二、xPath对路径的解析:

1、基本语法:

*

 

现节点下所有元素

 

*/Elem

 

现节点下所有节点的字节点中为“Elem”的节点

 

@Prop

 

属性值

 

@*

 

所有属于现节点的属性

 

.

 

现节点

 

..

 

现节点的上级

 

Elem[i]

 

现节点下第i个叫做Elem的元素(从1开始)

 

Elem[position() = 1]

 

现节点下第1个叫做Elem的元素(从1开始)

 

Elem/[@prop=“somevalue”]

 

现节点下,名字为Elem,具有prop的属性,并且属性值为somevalue的,那个元素

 

Elem1|elem2

 

现节点下,名字为Elem1或elem2的元素

 

.//elem

 

现节点下,可以跨越级别,所有的名字叫做elem的元素

 

Elem1//elem2

 

现节点下,可以跨越级别,所有的名字叫做elem2,且elem2的上级中有人叫Elem1,且Elem1是现节点的子元素,的元素

 


2、xPath节点类型:
  包括:根节点、元素节点、文本节点、属性节点、命名空间节点、处理指令节点、注释节点。与即是xml的节点类型相同。
3、以下面的xml树为例说明几种解析匹配模式:
 

[html]  view plain  copy
  1. <A id="a1">  
  2.   <B id="b1">  
  3.         <C id="c1">  
  4.           <B name="b"/>  
  5.           <D id="d1"/>  
  6.           <E id="e1"/>  
  7.           <E id="e2"/>  
  8.         </C>  
  9.   </B>  
  10.   <B id="b2"/>  
  11.   <C id="c2">  
  12.         <B/>  
  13.         <D id="d2"/>  
  14.         <F/>  
  15.   </C>  
  16.   <E/>  
  17. </A>  

1.按照路径解析:与文件路径的匹配相仿

(1)用“/”指示节点路径

如“/A/C/D” 表示节点"A"的子节点"C"的子节点"D",即id值为d2的D节点, “/”表示根节点。

(2)用“//”表示所有路径以"//"后指定的子路径结尾的元素

如“//E” 表示所有E元素,结果是所有三个E元素, 如“//C/E”表示所有父节点为C的E元素,结果是id值为e1和e2的两个E元素 。

(3)用“*”表示路径的通配符

如“/A/B/C/*”表示 A元素→B元素→C元素下的所有子元素,即name值为b的B元素、 id值为d1的D元素和id值为e1和e2的两个E元素

“/*/*/D”

“/*/*/D”表示上面有两级节点的D元素,匹配结果是id值为d2的D元素 , 如“//*”表示所有的元素。 

2.按照属性解析:使用@前缀表明是用属性匹配

//B[@id]表示所有具有属性id的B元素,结果为id值为b1和b2的两个B元素

//B[@*]表示所有具有属性的B元素,结果为两个具有id属性的B元素和一个具有name属性B元素

//B[not(@*)]表示所有不具有属性的B元素,结果为A元素→C元素下的B元素

//B[@id="b1"] id值为b1的B元素,结果为A元素下的B元素

3.按照位置解析:

/A/B/C[1]表示A元素→B元素→C元素的第一个子元素,得到name值为b的B元素

/A/B/C[last()]表示A元素→B元素→C元素的最后一个子元素,得到id值为e2的E元素

/A/B/C[position()>1]表示A元素→B元素→C元素之下的位置号大于1的元素,得到id值为d1的D元素和两个具有id值的E元素



4.按照亲属关系解析:常见的关系有父亲、孩子、祖先(父节点及父节点以上)、后代、兄弟。

//E/parent::* 表示所有E节点的父节点元素,结果为id值为a1的A元素和id值为c1的C元素

//F/ancestor::* 表示所有F元素的祖先节点元素,结果为id值为a1的A元素和id值为c2的C元素

/A/child::* 表示A的子元素,结果为id值为b1、b2的B元素,id值为c2的C元素,以及没有任何属性的E元素

/A/descendant::* 表示A的所有后代元素,结果为除A元素以外的所有其它元素

//F/self::* 表示所有F的自身元素,结果为F元素本身

//F/ancestor-or-self::* 表示所有F元素及它的祖先节点元素,结果为F元素、F元素的父节点C元素和A元素

/A/C/descendant-or-self::* 表示所有A元素→C元素及它们的后代元素,结果为id值为c2的C元素、该元素的子元素B、D、F元素

/A/C/following-sibling::* 表示A元素→C元素的紧邻的后序所有兄弟节点元素,结果为没有任何属性的E元素

/A/C/preceding-sibling::* 表示A元素→C元素的紧邻的前面所有兄弟节点元素,结果为id值为b1和b2的两个B元素

/A/B/C/following::* 表示A元素→B元素→C元素的后序的所有元素,结果为id 为b2的B元素、无属性的C元素、无属性的B元素、id为d2的D



元素、无属性的F元素、\无属性的E元素。

/A/C/preceding::*表示A元素→C元素的前面的所有元素,结果为id为b2的B元素、id为e2的E元素、id为e1的E元素、id为d1的D元素、name



为 b的B元素、id为c1的C元素、id为b1的B元素 



5.函数解析:

last()、position()等,不为重点。



三、实例应用:
1、将Oracle数据库配置信息写到xml文件中,使用dom4j解析:
sys-config.xml文件:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <config>  
  3.     <db-info>  
  4.         <driver-name>oracle.jdbc.driver.OracleDriver</driver-name>  
  5.         <url>jdbc:oracle:thin:@localhost:1521:orcl</url>  
  6.         <user-name>drp1</user-name>  
  7.         <password>drp1</password>  
  8.     </db-info>  
  9.   
  10.   
  11. </config>  


XmlConfigReader类的构造函数:
[java]  view plain  copy
  1. private XmlConfigReader() {  
  2.       
  3.       
  4.     SAXReader reader = new SAXReader();  
  5.       
  6.     InputStream in = <strong>Thread.currentThread().getContextClassLoader().getResourceAsStream</strong>("sys-config.xml");  
  7.     try {  
  8.                          
  9.           
  10.           
  11.         Document doc = reader.read(in);  
  12.           
  13.         //取得jdbc相关配置信息  
  14.         Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");  
  15.         Element urlElt = (Element)doc.selectObject("/config/db-info/url");  
  16.         Element userNameElt = (Element)doc.selectObject("/config/db-info/user-name");  
  17.         Element passwordElt = (Element)doc.selectObject("/config/db-info/password");  
  18.         ........          
  19.         //读取出这些信息后可以设置到一个数据库配置信息实体类中,或进行其他操作。  
  20.           
  21.     } catch (DocumentException e) {  
  22.         e.printStackTrace();  
  23.     }             
  24. }  


2、从配置文件反射Dao层类:
xml配置文件:
[html]  view plain  copy
  1. <config>  
  2.     <dao-factory>  
  3.         <item-dao-facotry>com.bjpowernode.drp.basedata.dao.ItemDaoFactory4Oracle</item-dao-facotry>  
  4.       
  5.         <user-dao-facotry>com.bjpowernode.drp.basedata.dao.UserDaoFactory4Oracle</user-dao-facotry>  
  6.     </dao-factory>  
  7. </config>  



循环读取dao-factory下的item-dao-factory节点到一个Map中:
[java]  view plain  copy
  1. //保存dao工厂的名称  
  2. //key=名称,value=具体类完整路径  
  3. private Map<String, String> daoFactoryMap = new HashMap<String, String>();  


doc是Document对象,读取方法同上面的例子
[java]  view plain  copy
  1. //取得DaoFactory信息  
  2. List daoFactorylist = doc.selectNodes("/config/dao-factory/*");  
  3.   
  4.   
  5. for (int i=0; i<daoFactorylist.size(); i++) {  
  6.     Element daoFactoryElt = (Element)daoFactorylist.get(i);  
  7.     String tagName = daoFactoryElt.getName();  
  8.     String tagText = daoFactoryElt.getText();  
  9.     System.out.println("读取DaoFactory-->>" + tagText);  
  10.       
  11.     //放入到Map中  
  12.     daoFactoryMap.put(tagName, tagText);  
  13.       
  14.       
  15. }  

document的selectNodes()返回某个节点的子节点集合。

总结:
  dom4j是java中解析xml的一个组件,xPath用于xml文件节点的选择,具有多种匹配模式:路径、属性、位置、关系、函数等。
  针对常见的xml文件的解析可以封装到一个类中,类似sqlHelp的封装,完成对xml文件的ACID,遍历修改等操作。

  还有其他的对xml解析方法,如:使用dom方法、SAX方式。不再详述。


转自:http://blog.youkuaiyun.com/lmdcszh/article/details/9236427

dom4j XML解析工具包与示例 在信息技术飞速发展的今天,Java开发者在处理XML文档时经常需要面对复杂的数据结构和大量的数据处理需求。DOM4J应运而生,以其高性能和易用性在众多XML处理库中脱颖而出。本章节将引领您初步了解DOM4J库,并介绍其在实际应用中的基础。DOM4J库是一个功能强大的开源Java库,用于处理XML文档,它能够创建、查询和修改XML文件。其名称"DOM4J"的含义为“Document Object Model for Java”,突显了它作为文档对象模型的实现。 阅读详情

相关推荐

深入解析dom4j与jaxen XML处理库

XML(Extensible Markup Language)可扩展标记语言是一种用于存储和传输数据的标记语言,它通过自定义标签来描述信息,提供了一种结构化的方式来表现信息内容。在Java领域,XML被广泛用于配置文件、数据交换和文档存储中,是各种Java XML API处理的基础。dom4j是一个易用、开源的Java XML API,它支持XML、XPath和XSLT。它与JDOM类似,但提供了更大的灵活性和更丰富的API。

weixin_42513870的博客 1183

Dom4j解析XML(详解)

Dom4j解析XML(详解) DOM解析 SAX解析 使用Dom4j解析XML 结合XPath解析XML

qq_51447436的博客 3万+

Java中SAX、Pull与DOM4J解析XML文件技术详解

本文还有配套的精品资源,点击获取 简介:本文详细介绍了Java中三种XML解析技术:SAX、Pull和DOM4J。这三种方法适用于不同的应用场景,如大文件处理和频繁查询。本文将通过Eclipse 4.8和Java 1.8环境的演示,让读者了解如何使用这些方法进行XML数据解析。SAX解析器基于事件驱动,适合大文件处理;Pull解析器提供了一个简洁的API,适合Android...

weixin_36184718的博客 946

使用Dom4j解析XML文件

使用Dom4j解析XML文件

junR_980218的博客 5652

使用dom4j和反射机制解析XML的完整教程

可扩展标记语言(XML)是用于存储和传输数据的行业标准,被广泛应用于数据交换和配置文件中。XML通过标签来组织数据,使其拥有自描述的特性,这允许用户根据需要自定义标签和属性,而不依赖于预定义的标记集合。它能够支持异构系统间的数据交换,同时保持数据的结构和内容清晰。DOM4J是一个功能强大的、灵活的、开源的Java库,用于处理XML文档。它支持DOM、SAX和JAXP,并且能够与XPath和XSLT紧密集成。DOM4J的一个重要特点就是性能卓越,尤其在处理大型文档时表现尤为突出。

weixin_30923011的博客 660

掌握Java DOM4J库进行XML解析与操作

Java的DOM4J是一个强大的开源库,它广泛应用于处理XML文档,提供了一组丰富的API来创建、解析和修改XML数据。DOM4J是一种基于文档对象模型(DOM)的Java API,它允许程序员以面向对象的方式操作XML文档,与DOM相比,DOM4J提供了更好的性能和灵活性。DOM4J支持SAX接口,并且它易于使用和集成到现有的Java应用程序中。除了广泛的功能之外,它还允许快速访问和处理XML文档,这使得它成为许多Java开发人员在需要处理XML数据时的首选工具。

weixin_42509888的博客 1059

Dom4j框架解析XML

XML解析是指将XML格式数据转换成计算机程序能够理解的数据结构的过程。XML解析器可以将XML文件解析成DOM(文档对象模型)、SAX(简单API for XML)等不同的数据结构。通过对XML文件进行解析,程序可以读取和操作其中的数据,从而实现对XML文件的数据分析和处理。常用的XML解析库包括Java中的DOM解析器和SAX解析器,C++中的libxml2库和TinyXML库,Python中的ElementTree库和lxml库等。

万维网连五洲,二进制写尽天下事,喜欢结识新伙伴寻找志同道合的朋友,欢迎一起探讨学习 2880

QTabWidget动态标签页管理:从代码创建到UI设计的实战指南

本文深入探讨了QTabWidget动态标签页管理的实战技巧,涵盖从纯代码创建到UI设计器布局的两种核心方法。详细讲解了如何动态添加、插入、关闭标签页,并管理其内容与生命周期。文章还提供了标签页精细化控制、界面优化(如设置图标、样式表)以及构建简易多文档编辑器的进阶实战案例,帮助开发者灵活应对数据监控、多文档编辑等复杂界面需求。

omega的博客 868

如何使用Dom4J解析XML文档

本文涉及XML解析的方式、使用Dom4j解析XML文档、Dom4j结合XPath解析XML等内容。

十八岁讨厌编程的博客 2069

卷积神经网络-猫狗识别(附源码)

利用python实现一个卷积神经网络,训练猫狗数据集,实现对猫狗图片的预测识别

m0_63223213的博客 2万+

HWSD全球土壤数据下载、处理与提取完整指南

全球尺度的科学研究与工程项目中,土壤数据是必不可少的基础底图,而HWSD(和谐世界土壤数据库)凭借其统一的分辨率与属性标准,成为农业区划、生态模型、土地利用变化和水资源评估等领域的通用数据源。深入理解其“栅格存编号、数据库存属性”的核心原理,是高效使用这套数据的关键。通过掌握MDB数据库结构、属性字段含义以及栅格与属性表的关联方法,研究者可以将原始数据转化为可用的研究底图。无论你是需要提取特定区域的土壤属性,还是进行面积统计与点位采样,合理的处理流程都能显著提升工作效率。本文从下载注册开始,一步步梳理数据清

weixin_29056781的博客 316

反射和XML

反射和XML 回顾: 1 NIO简介 Java Non-blocking IO New IO 2 和传统IO (1) 面向流 ,面向缓冲区 (2) 阻塞, 非阻塞 (3) 无 选择器(selector) 3 NIO Buffer:ByteBuffer CharBuffer Channel:FileCh...

awd20420318767642的博客 222

【四旋翼】pixhawk2.4.8-地面站配置-APM固件-四旋翼从装机到试飞

因为MP版本和APM版本的适配问题,真的真的是很大一个坑。最好先走别人走过的路,走通了再去自由发挥,不然白白浪费时间。下面提供我试飞成功过的版本。下面提供任意版本固件和地面站的下载方法。

xifan的博客 3万+

012-特殊文本文件「Java」

什么是Properties?答:是一个Map集合(键值对集合),但是我们一般不会当集合使用。作用:Properties 是用来代表属性文件的,通过 Properties 可以读写属性文件里的内容。

Fang_Jason的博客 524

从萤石云到GB28181:海康4G摄像机接入第三方平台的曲折之路

本文深入探讨了海康4G摄像机接入第三方平台时遇到的协议冲突问题,特别是GB28181与萤石云服务的互斥性。通过技术分析揭示了4G模块的定向流量限制和协议栈资源竞争等核心问题,并提供了有线接入测试和萤石云API二次开发等解决方案。最后总结了设备选型的关键参数和协议兼容性检查清单,为安防监控系统集成提供实用指导。

mango的博客 997

TensorFlow GPU版本安装步骤-Windows系统

本文由在Windows下安装TensorFlow GPU版本教程-优快云等整理得到。 目录 1、确认显卡是否支持CUDA 1.1 查看显卡信息 打开“设备管理器”,查看显卡信息,如下图所示: 由上图知,本电脑的显卡为NVIDIA Quadro P400. 1.2 查看支持CUDA的显卡 网址:https://developer.nvidia.com/cuda-gpus 经查询可知,该显卡支持CUDA,如下图所示: 2、安装CUDA 2.1 下载CUDA 网址:https://developer.nvi

x_lingyun的专栏 766

在C#中选择正确的集合进行编码

/去除内容两边的空。slf4j-api日志框架下载地址:https://repo1.maven.org/maven2/org/slf4j/slf4j-api/格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符。Logback日志框架官方网站:https://repo1.maven.org/maven2/ch/qos/logback/如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml。

2501_94596355的博客 350

乐鑫科技 EchoEar 喵伴修改自定义唤醒词的方法 EchoEar喵伴、唤醒词修改、ESP32、AI萌宠、智能音箱、开发者指南

标签:乐鑫科技、EchoEar喵伴、唤醒词修改、ESP32、AI萌宠、智能音箱、开发者指南大家好,我是一名前端开发工程师,最近在玩乐鑫科技推出的时,发现它不仅萌趣十足,还能进行全双工语音交互、多模态识别,甚至能识别你的情绪和与你互动。EchoEar 喵伴是由乐鑫科技和火山引擎扣子大模型团队合作开发的,它使用乐鑫的芯片方案(ESP32 系列)+ 火山引擎扣子大模型,支持 WiFi 连接和本地处理,长记忆能力可以让它记住用户的偏好与习惯。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1890

深入浅出:使用DOM4J结合XPath高效解析XML

当将数据存储在XML后,我们就希望通过程序获取XML的内容。我们使用Java基础所学的IO知识是可以完成的,不过需要非常繁琐的操作才可以完成,且开发中会遇到不同问题(只读、读写)。人们为不同问题提供不同的解析方式,使用不同的解析器进行解析,方便开发人员操作XML。

2301_80237574的博客 1643

【WRF安装】WRF编译错误:problems building executables look for error in the build log

WRF编译错误:problems building executables look for error in the build log

WW、forever的博客 754

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

XML 解析技术:DOM4j

Dom4j 是一个简单、灵活的开放源代码的库(用于解析/处理 XML 文件)。Dom4j 是由早期开发 JDOM 的人分离出来而后独立开发的。与 JDOM 不同的是,dom4j 使用接口和抽象基类,虽然 Dom4j 的 API 相对要复杂一些,但它提供了比 JDOM 更好的灵活性。

Baridhu的博客 2446

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

xml解析之Dom4J

1 xml解析 ***注意点 1、只有标签节点(element)才有子节点,属性节点(attribute)与文本节点(text)没有子节点 2、空格和换行也是xml的内容,作为原始内容被处理 3、123 4、123 1.1 解析方式(原理不同) DOM解析: SAX解析:   1.2 xml解析工具 DOM解析: 1)JAXP(sun公司官方) 2)JDOM工具(非官方)

LFSenior 4349

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【高级编程】XML DOM4J解析XML文件(含案例)

XML(EXtensible Markup Language),可扩展标记语言。XML 与操作系统、编程语言的开发平台无关。DOM4J(Document Object Model for XML in Java)是一个简单、轻量级的Java库,用于处理XML文档。它提供了一种方式来读取、修改和写入XML文件。DOM 把 XML 文档映射成一个倒挂的树。接下来分别定义读取、修改、添加、删除 XML 的静态方法。除非带有前缀,否则属性属于所属的元素的命名空间。元素名称可以包含字母、数字或其他的字符。

m0_66584716的博客 1921

DOM4J 解析 XML 之忽略转义字符

本文为博主原创文章,未经允许不得转载 背景 项目开发需要手动合入几十种语言的翻译到 string.xml 中,这是一件非常痛苦的事情:Copy、Paste,Copy、Paste,Copy、Paste... 人都快疯了!被逼无奈写了个自动替换翻译的工具。原理很简单:解析 Excel中的翻译,替换到 Xml 中。Excel 解析用 jxl.jar,Xml ...

Yuloran的专栏 3513

DOM、SAX、JDOM、DOM4J以及PULL在XML文件解析中的工作原理以及优缺点对比

1. DOM(DocumentObjectModel)文档对象模型(1)DOM是W3C指定的一套规范标准,DOM的核心是按树形结构处理数据,DOM解析器读入XML文件并在内存中建立一个结构一模一样的树,可以指定要访问的元素,进行随机访问,随意修改XML文件。尤其是向前处理时非常容易。 (2)DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。从而消耗很大的内存空间。......

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭ 1万+
上一篇: 我为什么不继续做java,用4个月转做了Hadoop开发?
下一篇: freemarker常见语法总结。
ExceptionMapping
博客等级 码龄10年 30粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值