⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeparser.java

📁 J2ME+WebService,采用KSoap框架进行操作。
💻 JAVA
字号:
package org.kxml.kdom;


import java.util.*;
import org.kxml.*;
import org.kxml.parser.*;


/** a pull parser that re-parses a kdom tree. */

public class TreeParser extends AbstractXmlParser {

    class Position {

	Node node;
	StartTag start;
	int index = -1;
	Position previous;

	Position (Node node) {
	    this.node = node;
	    index = 0;
	}


	Position (Element element, Position prev) {
	    this.node = element;
	    	    
	    previous = prev;
	    start = new StartTag (prev == null ? null : prev.start, 
				  element.getNamespace (), 
				  element.getName (),
				  element.getAttributes (),
				  element.getChildCount () == 0,
				  false);

	    start.setPrefixMap (element.getPrefixMap ());
	}
    }


    Position current;
    ParseEvent next;

    public TreeParser (Node node) {
	current = new Position (node);
    }
    

    public TreeParser (Element element, boolean skipRoot) {

	current = new Position (element, null);
	if (skipRoot) {
	    current.index = 0;
	    current.start = null;
	}
    }


    public ParseEvent read () {
	if (next == null) peek ();
	ParseEvent result = next;
	next = null;
	return result;
    }
	    
    

    public ParseEvent peek () {

	if (next == null) {

	    int i = current.index++;
	    Node node = current.node;
	
	    if (i < 0) 
		next = current.start;
	    else if (i >= node.getChildCount ()) {
		
		if (current.start == null || i > node.getChildCount ()) 
		    next = new ParseEvent (Xml.END_DOCUMENT, null);
		else {
		    next = new Tag (Xml.END_TAG, current.start, 
				   current.start.getNamespace (), 
				   current.start.getName ());

		    if (current.previous != null)
			current = current.previous;
		} 
	    }
	    else {
		int type = node.getType (i);
		
		if (type == Xml.ELEMENT) {
		    current = new Position (node.getElement (i), current);
		    next = peek (); // sets next....
		}
		else 
		    next = new ParseEvent (type, (String) node.getChild (i));
	    }
	}

	return next;
    }
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -