`
407827531
  • 浏览: 1080633 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

XML解析

阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

这几天一直在思考怎么样设计Wap的引擎。因为在j2me有限的资源上去解释xml是比较慢的,所以j2se上的xml类库是不适合用在j2me上,后来在网上查找了下发现了XmlPullParser ,而且用起来速度快,而且包也很小。现在把这两天学到的知识记录下来。

我的需求是解释一个标准的wml。比如:

xml 代码
 
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">  
  3. <wml>  
  4. <card id="index" title="天速">  
  5. <p align="center">天速科技</p>  
  6. <p align="center"><a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=03020047"> 动漫天下 </a></p>  
  7. <p align="center"><a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=03020048&amp;SPURL=http://211.155.31.143/t/viewPic.a?picId=1308"> 国色天香 </a></p>  
  8. <p align="center"><a href="http://wap.gd.monternet.com/reversesubscribe?SPID=819758&amp;ServiceID=04070717&amp;SPURL=http://211.155.31.143/eb/allBook.a">  风月书斋 </a></p>  
  9.   
  10. </card> </wml>  


上面是个简单的wml源文件。不过现在的wap网站差不都这样,基本上没有script,跟html上的各个控件。所以能解释上面的文档,基本上都是可以满足我的需求的。

现在我们来看下我们解释wml的java文件

java 代码
  1. /********************************************************************
  2. * 项目名称 :j2me学习 J2me Wap Explorer
  3. *
  4. * Copyright 2005-2006 Wuhua. All rights reserved
  5. *
  6. * 本程序只用于学习目的,不能用于商业目的。如有需要请联系作者
  7. ********************************************************************/
  8. import java.io.ByteArrayInputStream;
  9. import java.io.IOException;
  10. import java.io.InputStreamReader;
  11. import org.kxml2.io.KXmlParser;
  12. import org.xmlpull.v1.XmlPullParser;
  13. import org.xmlpull.v1.XmlPullParserException;
  14. import org.xmlpull.v1.XmlPullParserFactory;
  15. /**
  16. * 类名:Test.java
    编写日期: 2006-12-28
    程序功能描述:
    Demo:
  17. * Bug:
  18. *
  19. * 程序变更日期 :
    变更作者 :
    变更说明 :
  20. *
  21. * @author wuhua
    rrq12345@163.com
  22. */
  23. publicclass Test {
  24. //private static String xml = " <list><item>apple</item>"</list>
  25. // + "<item>orange</item>" + "<item>pear</item>";
  26. privatestatic String xml =""
  27. +"
  28. +"\"http://www.wapforum.org/DTD/wml_1.1.xml\">"
  29. +"<wml>"</wml>
  30. +"<card title="\&quot;天速\&quot;" id="\&amp;quot;index\&quot;">"</card>
  31. +"

    天速科技

    "
  32. +"

    动漫天下

    "
  33. +"

    国色天香

    "
  34. +"

    风月书斋

    "
  35. +" ";
  36. publicstaticvoid main(String args[])
  37. throws XmlPullParserException, IOException {
  38. ByteArrayInputStream bin = new ByteArrayInputStream(xml.getBytes());
  39. InputStreamReader in = new InputStreamReader(bin);
  40. KXmlParser parser = new KXmlParser();
  41. parser.setInput(in);
  42. int eventType = parser.getEventType();
  43. while (eventType != XmlPullParser.END_DOCUMENT) {
  44. if (eventType == XmlPullParser.START_DOCUMENT) {
  45. //System.out.println("Start document:");
  46. } elseif (eventType == XmlPullParser.END_DOCUMENT) {
  47. //System.out.println("End document");
  48. } elseif (eventType == XmlPullParser.START_TAG) {
  49. System.out.println(" " + parser.getName());
  50. //System.out.println("Start Count: " + parser.getAttributeCount());
  51. int size = parser.getAttributeCount();
  52. for(int i=0; i
  53. System.out.println(" " + parser.getAttributeName(i));
  54. System.out.println(" " + parser.getAttributeValue(i));
  55. }
  56. } elseif (eventType == XmlPullParser.END_TAG) {
  57. System.out.println(" " + parser.getName());
  58. } elseif (eventType == XmlPullParser.TEXT) {
  59. System.out.println(" " + parser.getText());
  60. }
  61. eventType = parser.next();
  62. }
  63. }
  64. }


现在解释下上面的东西,
XmlPullParser 只是个规范,可以到http://xmlpull.org/ 下载。我们来看看这个规范要求我们做些什么。
里面主要的方法有

java 代码
  1. //定义一个事件采用回调的方式,直到读取xml完毕。
  2. publicint getEventType() throws XmlPullParserException ;
  3. //遍历下一个事件,返回一个事件的类型
  4. publicint next() throws XmlPullParserException, IOException
  5. //得到当前Tag名字
  6. public String getName();
  7. //获取文本
  8. public String getText();
  9. //得到当前Tag下面的属性数量
  10. publicint getAttributeCount() ;
  11. //得到当前Tag下面指定位置的属性名称
  12. public String getAttributeName(int index);
  13. //得到当前Tag下面指定位置的属性植
  14. public String getAttributeValue(int index);


我们理解了XmlPullParser 可以自己实现一个XmlPullParser。不过java世界里好东西就是多。已经有人帮我们做了。
啊就是kxml。
这个API本身很简单。当时要把一个完整的wml解释并绘制在手机上还是要花相当的时间的。

分享到:
评论

相关推荐

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...

    java xml解析工具类 java xml解析工具类

    java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...

    C# XML解析方式

    根据给定文件中的标题、描述、标签以及部分内容,可以总结并深入探讨以下关于C#中XML解析的关键知识点: ### C#中的XML解析方式 #### 1. XML Text Reader(流式解析) - **简介**:在.NET框架中,`XMLTextReader`...

    XML解析器示例

    在LabVIEW(Laboratory Virtual Instrument Engineering Workbench)这个强大的图形化编程环境中,XML解析器是处理和操作XML数据的关键工具。本示例主要展示了如何在LabVIEW中实现XML文件的加载、保存和解析。 首先...

    xml解析文件的两种方式

    本文将详细介绍XML解析文件的两种主要方式:SAX(Simple API for XML)和DOM(Document Object Model)。 **1. DOM解析** DOM解析方式是将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这个树的每个...

    XML解析和生成工具

    本文将深入探讨XML解析和生成工具的相关知识,以及如何利用提供的`Markup.cpp`和`Markup.h`文件进行操作。 XML的结构: XML文档由一系列元素构成,每个元素都有一个开始标签和结束标签,如 `&lt;tag&gt;` 和 `&lt;/tag&gt;`。...

    XML解析 很全 一看就懂的东东

    在Java中,XML解析有四种主要的方法:DOM、SAX、JDOM和DOM4J。 1. DOM(文档对象模型)是W3C推荐的标准,它将XML文档转换为一棵树形结构,允许开发者通过节点遍历和操作XML内容。DOM的优势在于它提供了一种灵活的...

    ios 简单xml解析DEMO绝对可用

    本教程将介绍如何在iOS应用中实现简单的XML解析,并提供了一个名为"UITableViewTricks"的DEMO,供开发者们参考学习。 XML文件结构清晰,易于理解,但在iOS中解析XML数据并非内置功能,需要借助第三方库或者Apple...

    MusicXML 解析与布局

    MusicXML是一种开放标准的音乐符号交换格式,它允许数字音乐...总之,"MusicXML解析与布局"项目涵盖了XML解析、数据结构设计、图形渲染、音乐理论等多个方面的知识,对于深入理解音乐和计算机科学的结合具有重要意义。

    XML解析工具

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...

    适合嵌入式系统的开源XML解析器

    在嵌入式系统中,由于资源限制,往往需要轻量级且高效的XML解析器。"minixml"就是这样一个专为嵌入式系统设计的开源XML解析器,它提供DOM(Document Object Model)支持,使得开发者能够方便地处理XML文档。 mini...

    基于XML解析技术的Visio图与应用程序间的数据交互

    4. XML解析技术在Visio图数据交互中的具体应用:本文提出了一种新的方法,它利用成熟的XML解析技术来实现Visio图与应用程序间的数据交互。首先,需要将Visio图转换成XML格式的.vdx文件;其次,设计并实现一个解析...

    java心电图xml解析.zip

    Java XML解析是Java开发中的一项重要技能,尤其是在处理结构化数据时。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换和文档存储等领域。本压缩包“java心电图xml解析....

    xml解析器(解决XML错误)

    “xml解析器”就是用来解决这类问题的工具,它们读取XML文档并检查其语法和结构是否符合XML规范。安装一个可靠的XML解析器可以帮助开发者识别并修复这些问题,确保XML文件的有效性和可读性。本压缩包提供了两个XML...

    XML解析支持库

    XML解析支持库则是用于处理XML文档的核心工具,它们帮助开发者有效地读取、解析、创建和操作XML数据。 在Java开发中,常见的XML解析库有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming...

    XML解析支持库2.0#0版

    易语言EXMLParser.fne支持库中文名为易语言XML解析支持库,本易语言支持库提供对W3C标准XML文件的读写支持。目前本易语言支持库仅支持W3C标准的XML文件,不支持DTD。支持BASE64编码文本和CDATA文本,编码方面仅支持...

    libxml2-2.9.8.rar_C语言解析XML_ITW_c语言XML解析器_joined4mf_windows 8

    《C语言实现的libxml2-2.9.8 XML解析器详解》 XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于网络数据交换、配置文件存储等领域。在IT行业中,C语言由于其高效、灵活的特点,常被用来编写...

    XML解析技术研究XML解析技术研究

    XML解析技术是XML应用的核心,它涉及将XML文档转换为可处理的结构化数据。XML,全称为eXtensible Markup Language,是一种元语言,用于描述结构化数据,独立于编程语言、操作系统和传输协议。W3C联盟自1996年开始...

    XML解析器,用于解析XML文件

    理解和熟练使用XML解析器是任何IT专业人士的必备技能之一,无论是在移动应用、Web服务还是桌面应用程序中,XML解析都发挥着关键作用。了解和掌握TinyXML这样的解析库,可以帮助开发者更高效地处理XML数据。

    XML解析器下载JAR包

    XML解析器是处理XML文档的核心组件,它能够读取XML文件并将其内容转换为程序可以理解的形式。在Java环境中,XML解析器通常以JAR(Java Archive)文件的形式提供,方便开发者集成到项目中。 "XML解析器下载JAR包"这...

Global site tag (gtag.js) - Google Analytics