易截截图软件、单文件、免安装、纯绿色、仅160KB

J2ME中KXML与NanoXML解析XML总结

在J2ME体系中,对xml的解析有比较有名的第三方解析API,分别为KXML和NanoXML,他们都提供了对解析xml的支持。KXML在解析XML过程中会对文件内容一层一层进行解析,因此成为增量式解析器,比较适合大文件的解析。而NanoXML是一次性解析器,在一次时间里就把整个xml文档解析完,因此不适合大文件的解析,会造成内存不足的现象。有关这两种解析器网上都有介绍过,在这里对它们的使用进行总结。
  XML全称为EXtensible Markup Language,中文称为可扩展标记语言,是一种计算机所能理解的信息符号语言。计算机之间可以通过此种标记语言处理包含各种信息的文章等功能。由于XML是一种允许相关人士自由决定的标记语言,所以称语言的可扩展性。XML作为一个标准,而且由于XML是一种纯文本格式存储文件,从而使得XML本身具备了很好的跨平台的特点,因此被广泛应用于网络数据交换的各个领域,包括网络通讯、不同程序语言平台之间的数据交流等方面。
  要使用XML作为网络中传输通讯,势必在传输双方的发送方跟接收端都具备对XML文件的解析能力才能实现正常的数据交换并完成通讯过程。由于在移动设备硬件中的CPU跟内存的不足,跟网络传输速率的欠缺,而且解析XML需要消耗更多的资源,因此使得XML在移动设备中的使用收到了限制,在更多时候我们采用的是采用基于基本数据流的形式(如J2ME中的DataInputStream和DataOutputStream)在读取和发送数据。然而,随着智能手机硬件的提高跟普及以及3G网络的落实,使得在不久我们将能无顾虑地在移动通讯中使用XML了。
  在J2ME体系中,对xml的解析有比较有名的第三方解析API,分别为KXML和NanoXML,他们都提供了对解析xml的支持。KXML在解析XML过程中会对文件内容一层一层进行解析,因此成为增量式解析器,比较适合大文件的解析。而NanoXML是一次性解析器,在一次时间里就把整个xml文档解析完,因此不适合大文件的解析,会造成内存不足的现象。有关这两种解析器网上都有介绍过,在这里对它们的使用进行总结。
  一、创建实例对象
  1、使用NanoXML时由于是一次性机制,因此将xml数据流一次性封装创建解析实例对象kXMLElement
/**
  HttpConnection conn;
  String xml;
  Reader r;
  */
  //......获取网络连接对象或者其他形式数据对象
  InputStreamReader isrDoc =
  new InputStreamReader(conn.openInputStream());//获取输入流,这里以HttpConnection为例
  kXMLElement


相关文档:

XML 实体引用

在 XML 中,一些字符拥有特殊的意义。
如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生 XML 错误:
<message>if salary < 1000 then</message>
为了避免这个错误,用一个实体引用来代替 "<" 字符:
<message>if salary < 1000 then ......

XML 属性vs元素

请看下面的示例:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person> ......

由xml生成xsd及实体类

使用VS2005工具XSD.exe(SDK\v2.0\Bin\xsd.exe)自动生成实体类:
xsd /c /namespace:myCompany /language:CS temp1.xsd
也可以生成DataSet类型的类:
xsd /dataset /language:CS temp1.xsd
 ( 类文件和XSD之间可以相互转换,也就是说,你也可以先生成类,然后自动生成XSD)
    自动读取XML数据 ......

xml和java Bean的直接转换,Xmap

package test;
import java.util.ArrayList;
import java.util.List;

import org.nuxeo.common.xmap.annotation.XNode;
import org.nuxeo.common.xmap.annotation.XNodeList;
import org.nuxeo.common.xmap.annotation.XObject;


/**
* Book 实体对象,此处用XMap注解
* @author Administra ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号