J2ME中使用KXML的例子

普通的JAVA XML解析包比较大,占用资源比较多,不适合嵌入式设备使用
KXML是专门用在嵌入式设备上,只有十几K
下面是我在实际项目中用到的一代码,供大家参考
 public String XmlDecoding(DataInputStream din) throws IOException{
  String temp = null;
  Reader reader = new InputStreamReader(din);
  XmlParser parser = new XmlParser(reader);
  ParseEvent pe = null;
  parser.read(Xml.START_TAG, null, "upos");
  parser.skip();
  ParseEvent event = null;
  do {
   try {
    event = parser.read ();

    if(event.getType()==Xml.START_TAG) {
     String name = event.getName();
     temp += "<"+name + ">/n";
    }

    if(event.getType()== Xml.TEXT) {
     String name = event.getText();
     name = name.trim();
     temp += name + "/n";
    }

    if(event.getType()== Xml.END_TAG) {
     String name = event.getName();
     temp += "<"+name + ">/n";
    }

   }
   catch(IOException ex) {       
    System.out.println("Exception occured");
   }
  }
  while (event.getType() != Xml.END_DOCUMENT);
  return temp;
 }

<script type="text/javascript"> // </script>

一段如何使用kxml的代码- -

                                      

 

到处找kxml的代码,没找到,刚巧看到《Crack J2ME》里面有一段,非常完整,贴下来供同道参考吧。关于详细的解释,可以参加这一篇文章



XMLCaseStudy


/**
 *  Basic packages used by various classes..
 *
 */
import java.io.InputStream;
import java.util.Hashtable;
import java.util.Enumeration;
import com.sun.kjava.*;
import java.lang.*;
import javax.microedition.io.*;
import java.io.*;
/**
 *  Packages used by the XML parser...
 *
 */
import org.kxml.*;
import org.kxml.io.*;
import org.kxml.parser.*;

/**
 *  Declaring a class XmlCaseStudy. This class is responsible for
 *  reading the file  and pasing it.Then it displays a screen which
 *    contains the parse results.
 */
public class XmlCaseStudy extends Spotlet
{

/**
 *   declaring the variables used by the parser..
 *
 */
AbstractXmlParser xmlparser;
ParseEvent event;
DataInputStream din;
String result_string = "";
/**
 *  Declaring the GUI components
 *
 */

private Button bt = new Button("Ok",70,145);        // Gui Components (Button)
private Button exit = new Button("Exit",35,145);   // Gui Components (Button)

/**
 *  main Class which calls the Class XmlCaseStudy.
 *
 */
      public static void main(String args[])throws Exception
      {
        XmlCaseStudy casestudy = new XmlCaseStudy();
      }   


        public XmlCaseStudy()
          {
/**
 *  Getting the Graphics and redrawing the screen.
 *
 */ 
            Graphics graphics = Graphics.getGraphics();
            graphics.resetDrawRegion();
            graphics.clearScreen();   
/**
 *  Painting the title on the screen., 
 *
 */
            graphics.drawString("XML case Study..",25,10);
            graphics.drawString("Press OK to fetch XML file and Parse it",5,40);
/**
 *  Registering the Spotlet and painting the GUI components. 
 *
 */
            register(NO_EVENT_OPTIONS);
            bt.paint();
            exit.paint();
                 
          }
         

            public void penDown(int x, int y)   
            {
/**
 *  When Ok is pressed unregister the spotlet, call the startReading
 *  class to read the XML file then call the XML parser which will
 *    parse the file and store the results in a string which is passed
 *    as a parameter to another class which displays the result.
 */
                if(bt.pressed(x,y))
                 {
                    unregister();
                    startReading();
                    parseData();
                       new result_screen(result_string);
                 }
                 else
/**
 *  Exit the program
 *
 */
                  {
                    System.exit(0);
                  }
            }

        public void startReading()
        {
          try
          {
/**
 *  Read the file and pass to the XML parser..
 *
 */
             din = Connector.openDataInputStream("testhttp://pankaj/books.xml");

             xmlparser = new XmlParser(new InputStreamReader(din));
          }
          catch(IOException e)
          {
          System.out.println("Exception Occurred while reading");
          }
        }

        void parseData()
         {
          do
          {
           try
           {
                event = xmlparser.read ();
/**
 *  Start Tag is encountered.. and Appended to a string.
 *
 */
                if(event.getType()==Xml.START_TAG)
                {
                    StartTag stag = (StartTag)event;
                     String name = stag.getName();
                    result_string = result_string + "Start "+name + "/n";
                }
/**
 *  text between tags is encountered and appended to the String.
 *
 */
                if(event.getType()== Xml.TEXT)
                {
                    TextEvent tevent = (TextEvent)event;
                    String name = tevent.getText();
                    name = name.trim();
                    result_string = result_string +"Value  "+name + "/n";
                }
/**
 *  End Tag is encountered.. and Appended to a string.
 *
 */

                if(event.getType()== Xml.END_TAG)
                {
                    EndTag end_tag = (EndTag)event;
                    String name = end_tag.getName();
                    result_string = result_string + "End  "+name + "/n";
                }

           }
           catch(IOException ex)
           {       
                System.out.println("Exception occured");
           }
        }
        while (!(event instanceof EndDocument));
        System.out.println("**** END OF DOCUMENT ****"); // End od document is reached.
     }
}     

这一段是result_screen.java
/**
 *  Basic packages used by various classes..
 *
 */
import com.sun.kjava.*;

/**
 *  Decalaring a class result_screen which is responsible for
 *  showing the results in the ScrollTextBox
 */
public class result_screen extends Spotlet
{

/**
 *  Declaring the GUI components
 *
 */

    Button exit = new Button("Exit", 80,145);
    ScrollTextBox result_box;

    result_screen(String result)
    {
/**
 *  Getting the Graphics and redrawing the screen.
 *
 */         
        Graphics graphics = Graphics.getGraphics();
        graphics.resetDrawRegion();
        graphics.clearScreen();   
   
/**
 *  Painting the title on the screen., 
 *
 */
        graphics.drawString("Result of parsing",25,2);
/**
 *  Registering the Spotlet and painting the GUI components. 
 *
 */
        result_box = new ScrollTextBox(result,10,20,120,120);
        exit.paint();
        result_box.paint();
        register(NO_EVENT_OPTIONS);
    }

    public void penDown(int x, int y)
    {
/**
 *  Exit the program
 *
 */
        if (exit.pressed(x,y))
        {
            System.exit(0);
        }
        else if (result_box.contains(x,y))
        result_box.handlePenMove(x,y);
    }


    public void penMove(int x, int y)
    {
         if (result_box.contains(x,y))
         result_box.handlePenMove(x,y);
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值