首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

J2ME 與 XML 整合實戰:基於 TinyXML 解析器的樹形模型解析範例

     編輯:Java 程式設計入門

XML 於 J2ME 的應用場景

XML 獨立於平台、純文本格式,適合行動裝置與伺服器交換結構化資料。J2ME 需輕量級解析器(記憶體佔用極小),常見選擇:KXML、MinXML、NanoXML、TinyXML(本文採用 TinyXML,~15KB)。

兩種解析模式

  • 事件驅動 (SAX-like):逐元素回調,記憶體佔用極低,但無法隨機存取。
  • 樹形模型 (DOM-like):一次性載入整份 XML 至記憶體樹結構,導航操作方便快捷,代價是記憶體開銷較大。本文採用樹形模型。

完整實作步驟

  1. 下載 TinyXML.jar 放入專案 lib/ 目錄。
  2. 準備 XML 檔 mail.xml 部署於 J2EE 伺服器 public_html/:
<?xml version="1.0"?>
<mail>
  <From>Developer</From>
  <To>Students</To>
  <Cc>Faculty</Cc>
  <Date>30</Date>
  <Subject>Integration</Subject>
  <Body Language="English">This is J2ME!!!!!!</Body>
</mail>
  1. MIDlet 代碼 tinyTreeDemo.java:
import gd.xml.*; import gd.xml.tiny.*;
public class tinyTreeDemo extends MIDlet implements CommandListener {
    private String url = "https://127.0.0.1:8000/mail.xml";
    private ParsedXML root;
    // ... UI 初始化略

    public void commandAction(Command c, Displayable s) {
        if (c == sendCommand) {
            try {
                root = TinyParser.parseXML(url); // 取得根節點
                displayNode(root);               // 遞迴列印
            } catch (ParseException e) { e.printStackTrace(); }
        }
    }

    private void displayNode(ParsedXML px) {
        String nodeName = px.getTypeName();
        if (px.getName() != null) nodeName += "<" + px.getName() + ">";
        String content = px.getContent() != null ? px.getContent() : "";
        System.out.println(nodeName + ":"); System.out.println(content);

        // 屬性列印
        Enumeration attrs = px.attributes();
        if (attrs.hasMoreElements()) {
            System.out.print("attribute:");
            while (attrs.hasMoreElements()) {
                String name = (String) attrs.nextElement();
                System.out.println(name + ":" + px.getAttribute(name));
            }
        }
        // 子元素遞迴
        Enumeration elems = px.elements();
        if (elems.hasMoreElements()) {
            while (elems.hasMoreElements())
                displayNode((ParsedXML) elems.nextElement());
        }
    }
}

執行結果(主控台輸出)

root:
tag<mail>:
tag<From>:
text: Developer
tag<To>:
text: Students
tag<Cc>:
text: Faculty
tag<Date>:
text: 30
tag<Subject>:
text: Integration
tag<Body>:
attribute: Language:English
text: This is J2ME!!!!!!

展示了樹形解析器對節點類型、名稱、內容、屬性與子元素的完整遍歷能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved