📄 processwml.java
字号:
package org.httpClient.com;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import org.gui.com.HttpClient;
import org.gui.com.WMLForm;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import java.io.*;
import javax.microedition.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import org.gui.com.MainForm;
public class ProcessWML {
private String WML;
private Display display;
private boolean ishref = false;
private boolean isanchor = false;
private boolean haveMessage=false;
private String time;
private WMLForm arrayForm;
private Image image;
private String message ="";
private KXmlParser parser;
private RMStore cookieClass;
private String item,Attribute,Value,URL,method;
private HttpClient hc = null;
public ProcessWML(String WML,Display display,
long time,RMStore cookieClass,HttpClient hc){
this.WML = WML;
this.cookieClass = cookieClass;
this.display = display;
this.time = String.valueOf(time);
this.hc = hc;
}
public void process()throws XmlPullParserException, IOException{
ByteArrayInputStream bin = new ByteArrayInputStream(WML.getBytes());
InputStreamReader in = new InputStreamReader(bin);
parser = new KXmlParser();
parser.setInput(in);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
} else if (eventType == XmlPullParser.END_DOCUMENT) {
} else if (eventType == XmlPullParser.START_TAG) {
parserStartLag();
} else if (eventType == XmlPullParser.END_TAG) {
parserEndLag();
} else if (eventType == XmlPullParser.TEXT && !parser.isWhitespace()) {
parserTextNLink(parser.getText().trim());
}
eventType = parser.next();
}
arrayForm.append("Delayed: " + time+"ms");
display.setCurrent(arrayForm);
}
public void parserEndLag(){
if(parser.getName().equals("a")){
ishref = false;
}else if(parser.getName().equals("do")){ //一个do结束标志一个消息
arrayForm.setMsg(message);
message = "";
}else if(parser.getName().equals("anchor")){ //标志一个anchor消息
isanchor = false;
arrayForm.setMsg(message);
message ="";
}
}
public void parserStartLag(){
int size = parser.getAttributeCount();
if(parser.getName().equals("card")){ //要建立一个Form
String id = null;
String title = null;
for(int i=0; i < size; i++){
if(parser.getAttributeName(i).equals("id")){
id = parser.getAttributeValue(i);
}else if(parser.getAttributeName(i).equals("title")){
title = parser.getAttributeValue(i);
}
}
arrayForm =new WMLForm(id,title,display,cookieClass,hc);
}else{
parserItems();
}
}
public void parserTextNLink(String str){
if(ishref){ //是页面转换事件
arrayForm.newItemLink(str);
}else if(isanchor){ //是连接服务器的事件
arrayForm.newItemEvent(str,true);
}else{
arrayForm.newItemText(str); //为页面text
}
}
public void parserItems(){
item = parser.getName();
int size = 0;
size = parser.getAttributeCount();
String arg1 = null;
boolean password = false;
if(item.equals("input")){
for(int i=0; i<size; i++){
Attribute = parser.getAttributeName(i);
Value = parser.getAttributeValue(i);
if(Attribute.equals("name")){
arg1 = Value;
}else if(Attribute.equals("type")){
if(Value.equals("password")){
password = true;
}
}
}
arrayForm.newInput(password, arg1);
}else if(item.equals("do")){
for(int i=0; i< size;i++){
Attribute = parser.getAttributeName(i);
Value = parser.getAttributeValue(i);
if(Attribute.equals("label")){
arg1 = Value;
}
}
arrayForm.newItemEvent(arg1,false);
}else if(item.equals("go")){
for(int i=0; i< size;i++){
Attribute = parser.getAttributeName(i);
Value = parser.getAttributeValue(i);
if(Attribute.equals("href")){
URL = Value;
}else{
method= Value;
}
}
arrayForm.setURLNMethod(URL, method); //
}else if(item.equals("postfield")){
for(int i=0; i< size;i++){
Attribute = parser.getAttributeName(i);
Value = parser.getAttributeValue(i);
if(Attribute.equals("name")){
if(message !=""){
message = message + "&";
}
message = message + Value + "=";
}else{
message = message + Value;
}
}
}else if(item.equals("img")){ //从服务器下载图片
String imagehref = "";
for(int i=0; i < size;i++){
Attribute = parser.getAttributeName(i);
Value = parser.getAttributeValue(i);
if(Attribute.equals("src")){
imagehref = Value.substring(1,Value.length()-3)+"png";
}
}
ImageItem imageItem = new ImageItem("",null,Item.LAYOUT_CENTER|Item.LAYOUT_NEWLINE_AFTER,"CampusTaoBao.com");
DownImage downimage = new DownImage("http://www.xiaoyuantaobao.com:8080/myWml/"+imagehref,imageItem,arrayForm);
downimage.start();
arrayForm.newImage(imageItem);
}else if(item.equals("a")){
ishref = true;
for(int i=0; i< size;i++){
Attribute = parser.getAttributeName(i);
Value = parser.getAttributeValue(i);
if(Attribute.equals("title")){
arg1 = Value;
}else{
arrayForm.sethref(false,Value.substring(getIndex(Value,'#')+1));//把href中的#删除
}
}
}else if(item.equals("p")){
if(size>0) //主要是用来判断<p>中的align
arrayForm.setLayout(parser.getAttributeValue(0));
}else if(item.equals("anchor")){
isanchor = true;
}
}
public int getIndex(String str,char c){
int result = 0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)==c){
return result =i;
}
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -