kxml解析 xml的两种方式

 KXML是一个只占很小存储空间的XML语法分析程序,对于J2ME应用程序非常适合。它有一个非常独特的DOM操作方法和被称为Pull的语法分析方法。

WTK下载地址:http://java.sun.com/products/j2mewtoolkit/download-2_0.html

Kxml下载地址:http://kxml.objectweb.org/software/downloads/

实例分析(通过Pull,Dom方式解析xml)

(1)Pull语法分析

  1. import java.io.IOException;
  2. import org.kxml2.io.KXmlParser;
  3. import org.xmlpull.v1.XmlPullParser;
  4. import org.xmlpull.v1.XmlPullParserException;
  5. public class TestPull {
  6.  public static void main(String args[]) throws XmlPullParserException,
  7.    IOException {
  8.   KXmlParser parser = new KXmlParser();
  9.   parser.setInput(new TestPull().getClass().getResourceAsStream(
  10.     "/test.xml"), "UTF-8");
  11.   parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
  12.   int eventType = parser.getEventType();
  13.   while (eventType != XmlPullParser.END_DOCUMENT) {
  14.    if (eventType == XmlPullParser.START_DOCUMENT) {
  15.     System.out.println("Start document");
  16.    } else if (eventType == XmlPullParser.END_DOCUMENT) {
  17.     System.out.println("End document");
  18.    } else if (eventType == XmlPullParser.START_TAG) {
  19.     System.out.println(parser.getName());
  20.     System.out
  21.       .println("Start Count: " + parser.getAttributeCount());
  22.     int size = parser.getAttributeCount();
  23.     for (int i = 0; i < size; i++) {
  24.      System.out.println(parser.getAttributeName(i));
  25.      System.out.println(parser.getAttributeValue(i));
  26.     }
  27.    } else if (eventType == XmlPullParser.END_TAG) {
  28.     System.out.println(parser.getName());
  29.    } else if (eventType == XmlPullParser.TEXT) {
  30.     System.out.println(parser.getText());
  31.    }
  32.    eventType = parser.next();
  33.   }
  34.  }
  35. }

 

(2)Dom方式

  1. import org.kxml2.io.KXmlParser;
  2. import org.kxml2.kdom.Document;
  3. import org.kxml2.kdom.Element;
  4. public class TestDom {
  5.  public static void main(String args[]) {
  6.   KXmlParser parser = new KXmlParser();
  7.   Document doc = new Document();
  8.   try {
  9.    parser.setInput(TestDom.class.getResourceAsStream("test.xml"), "UTF-8");
  10.    doc.parse(parser);
  11.   } catch (Exception e) {
  12.    e.printStackTrace();
  13.   }
  14.         Element root = doc.getRootElement();
  15.         traverse(root);
  16.   
  17.  }
  18.  private static void traverse(Element element) {
  19.   for (int i = 0; i < element.getAttributeCount(); i++) {
  20.    System.out.println("Attribute:" + element.getAttributeName(i)
  21.      + "=" + element.getAttributeValue(i));
  22.   }
  23.   for (int i = 0; i < element.getChildCount(); i++) {
  24.    if (element.isText(i)) {
  25.     if (!element.getText(i).trim().equals(""))
  26.      System.out.println("Text:" + element.getText(i));
  27.    } else {
  28.     if (element.getType(i) == Element.COMMENT) {
  29.      System.out.println("comment:" + element.getChild(i));
  30.     } else if (element.getType(i) == Element.ELEMENT) {
  31.      traverse(element.getElement(i));
  32.     }else{
  33.      System.out.println(element.getType(i));
  34.     }
  35.    }
  36.   }
  37.  }
  38. }

 

附注:

KXML是一个Enhydra维护的项目,支持下面的性能:

1、支持XML名称空间

2、用"松散"模式分析HTML或其它SGML格式

3、占用很少的存储空间(21 kbps)

4、基于Pull的分析

5、支持XML写操作

6、可选的DOM支持

7、可选的WAP支持

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值