- 浏览: 2114403 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
ratlsun:
想请教下uc最新版本在android4.2和4.3版本上是不是 ...
UC浏览器8.3 (for iPhone)设计理念.“無”为而设 -
gly0920sky520123:
很有用哦,谢谢
DOS命令大全(经典收藏) -
chenyu0748:
UC加油,花哥加油~
UC浏览器8.3 (for iPhone)设计理念.“無”为而设 -
cnliuyix:
LZ搞点更有层次的吧,介个一般工程里根本用不到这么简单的。Si ...
Android 设计一个可单选,多选的Demo -
gang4415:
rgz03407@163.com
JSR规范,系统参数测试大全
在设计wap Explorer时关键的一步是解释wml生成UI控件,并添加到Form上对于我来说遇到了困难。
比如:1.网络读取的wml有很多是不规范的wml比如缺少结束标记,或者游戏特殊字符,比如字符'<'而网络上的可能是“《”这样解释的时候就会抛出异常--对于kml解释器来说。这样的话,下面的就解释不到了。只能显示一部分的wml,所以这就需要一个容错能力强的wml解释器。
2。生成UI控件,因为j2me高级UI不提供对这些方面的需求,所以就要自己来设计。自己设计要考虑到事件处理,UI控件的位置处理等。这就决定了,是一开始解释就确定UI的位置呢。还是解释好。绘制出来的时候才具体进行位置匹配。
3.。。
4.。。。
好现在将我解释一些简单的wml思路整理出来。在这些代码中只能解释不带特殊标记的wml,比如 (主要是kxml会报错)。
首先自己写一个接口专门用于解释wml,并生成结果对象。
java 代码
- public interface Parser {
- Vector getResult();
- void parser() throws Exception;
- }
对于wap来说。标记语言也是比较多的。比如wml, xhtml等,现在我只写支持wml的wap。里面的代码只是思路。
java 代码
- public final class WmlParser implements Parser {
- private static Logger logger = Logger.getLogger("WmlParser");
- /**
- * Wap GUI集合
- */
- private Vector parts = new Vector();;
- private Part part;
- private Hashtable attr = new Hashtable();
- /**
- * 当前标记,通过当前标记来创建Wap UI.
- */
- private String currentTag;
- /**
- * 创建当前Align.
- */
- private String align;
- KXmlParser parser;
- private WmlParser(InputStream in) throws XmlPullParserException{
- parser = new KXmlParser();
- parser.setInput(in, "UTF-8");
- }
- public static WmlParser getWmlParser(InputStream in) throws XmlPullParserException{
- return new WmlParser(in);
- }
- /**
- * 解释wml,并生成一系列的Wap GUI部件。
- * 比如遇到<a href="index.wml">首页</a> 则对于的生成一个 HyperLink;
- * @see WAPGUIFactory.createHyperLink(String text, String url,
- String algin) ;
- * @param in -- 通过Net获取InputStream
- * @return -- 返回一个Vector集,里面包含了,Wap GUI
- * @throws XmlPullParserException -- 解释出错的时候抛出异常
- * @throws IOException -- 读取数据的时候抛出异常
- */
- public final void parser()
- throws XmlPullParserException, IOException {
- if(parser == null)
- throw new XmlPullParserException("Parser is Null");
- 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) {
- parserWapTagImpl(parser );
- } else if (eventType == XmlPullParser.END_TAG) {
- } else if (eventType == XmlPullParser.TEXT) {
- parserTextImpl(parser);
- }
- eventType = parser.next();
- }
- //return parts;
- }
- private void parserTextImpl(KXmlParser parser) {
- logger.debug("The Two parser ... ");
- parserAlign();
- if(currentTag.equals(WmlTag.A_TAG)){
- parserHyperLinkImpl(parser);
- }else if(currentTag.equals(WmlTag.P_TAG)){
- paserStringPart(parser);
- }
- }
- /**
- * 处理String的显示
- * @param parser2
- */
- private void paserStringPart(KXmlParser parser) {
- String text = parser.getText();
- if(text != null || !text.equals("")){
- part = WAPGUIFactory.createStringPart(parser.getText(), Style.PLAIN_SMALL, align);
- parts.addElement(part);
- logger.debug("Text : " + text);
- }
- attr.clear();
- }
- /**
- * 处理HyperLink,并生成HyperLink控件
- * @param parser
- */
- private void parserHyperLinkImpl(KXmlParser parser) {
- String herf = (String) attr.get(WmlTag.A_ATTR[0]);
- if(herf != null && !parser.getText().equals("")){
- part = WAPGUIFactory.createHyperLink(parser.getText(), herf, align);
- parts.addElement(part);
- // logger.debug(herf);
- }
- attr.clear();
- }
- private void parserAlign() {
- //align = (String)attr.get(WmlTag.P_ATTR[1]);
- if(align == null || align.toLowerCase().equals("left")){
- align = Part.ALIGN_LEFT;
- }else if(align.toLowerCase().equals("center")){
- align = Part.ALIGN_CENTER;
- }else if(align.toLowerCase().equals("right")){
- align = Part.ALIGN_RIGHT;
- }else{
- align = Part.ALIGN_LEFT;
- }
- }
- /**
- * 解释Wap标记,并把属性保存到attr
- * @param parser
- */
- private void parserWapTagImpl(KXmlParser parser) {
- //logger.debug("The One parser ... ");
- String name = parser.getName();
- int size = parser.getAttributeCount();
- for (int i = 0; i < size; i++) {
- if(parser.getAttributeName(i).toLowerCase().equals(WmlTag.ALIGN)){
- align = parser.getAttributeValue(i).toLowerCase();
- }else{
- attr.put(parser.getAttributeName(i).toLowerCase(), parser.getAttributeValue(i).toLowerCase());
- }
- logger.debug(parser.getAttributeName(i) + " : " + parser.getAttributeValue(i));
- }
- currentTag = name;
- }
- public Vector getResult() {
- return parts;
- }
- }
唉,元旦3天都不曾怎么写代码。好像挺浪费的
发表评论
-
汉字点阵字库原理
2011-01-28 10:09 3387一、 汉字编码 1. ... -
如何通过改jad和Manifest把其它手机的java游戏改成N830的
2011-01-25 10:21 1361首先要明确一点,不是所有的游戏都能改的。 <200 ... -
索爱手机IMSI序列号获取
2011-01-20 11:29 1963国际移动用户识别码(I ... -
J2ME数组的复制及连接操作
2010-11-19 10:47 1272public class Arrays { /** ... -
手机 J2ME MIDP 性能测试工具(MIDP BenchMark)
2010-11-19 10:35 1463JavaME Test Suitehttp://www.dog ... -
SocketConnection 参数详细介绍
2010-03-23 11:34 2135请大家看下面的代码: len = is.read(gDat ... -
J2ME使用Socket通过cmwap接入点访问安全HTTPS
2010-03-17 16:36 484这个问题是在我升级J2ME版XHTML浏览器的时候被引入的 ... -
一些很特别的J2ME开源项目(转
2010-03-11 09:43 2362StrutsME 一个轻量级的序列化协议,使J2ME客户端能调 ... -
WMLC 检查charset编码
2009-12-16 15:27 180http://www.iana.org/assignments ... -
Eclipse快捷键
2009-12-01 10:38 1418编辑相关快捷键 Eclipse的编辑功能非常强大,掌 ... -
改善你的J2ME程序界面-使用开源UI库
2009-09-03 16:45 3705J2ME自带UI不是太美观,使用起来也不太方面,为了解决这 ... -
LZW数据压缩算法的原理分析【转】
2009-08-05 19:31 2574转一篇好文章, 原文地址:http://www.cnblog ... -
<a> 标签,target="blank",target="_blank" 的区别。
2009-05-27 13:00 11560在编写html代码的时候。 target="bla ... -
贡献 高效的MIDlet 编程
2009-05-23 15:32 1902从网上找到这本资料。 是E文版的。 大家顺便锻炼下E文 -
How to use pop-up TextBox in Java ME
2009-05-23 13:44 1774Overview One of the Displayabl ... -
How to use freely resizable font in in Java ME
2009-05-23 13:41 1337Contents [hide] 1 Overview 2 ... -
A Simple Ordered Hashtable
2009-05-23 12:08 1564This article illustrates how to ... -
开发NokiaS40系列应用程序初级篇
2009-05-22 18:56 1721本文讲述如何搭建Nokia S40系列手机应用程序的开发环境 ... -
索尼爱立信手机在 J2ME 程序中的字体大小
2009-05-18 16:25 1349之前有朋友问到索尼爱立信手机在 J2me 程序中的字体大小,请 ... -
If-Modified-Since & If-None-Match
2009-05-13 11:01 14555google告诉网站站长:您 ...
相关推荐
在深入学习WMLScript时,可以参考《第7章 WMLScript基础.doc》这样的文档,它们通常会详细解释WMLScript的语法、函数、对象以及实例应用。此外,实践是掌握任何编程语言的关键,尝试编写简单的WMLScript脚本并运行在...
解释WML解析和执行过程中的错误类型及处理方法。 5. **最佳实践** 提供编写高效、易读WML代码的建议。 通过学习WAP开发教程和查阅WML参考手册,开发者可以掌握创建适应移动设备的Web应用所需的技能,从而为移动...
书中首先对WAP栈进行了概述,解释了数据如何从服务器传输到客户端的过程。作者使用了一种直观的方式引导读者了解这本书的结构和书中所采用的约定,同时也鼓励读者提出反馈和问题。 第1章“Introduction to WML”...
通过阅读`wml-reference.pdf`文档,你可以找到详细的示例代码和解释,进一步了解WML的实际用法。 总之,WML语言是移动互联网早期的重要工具,尽管现在已经被更先进的技术所替代,但理解其基本概念有助于我们理解...
WML标记可以有必需或可选的属性,以指定额外信息来解释这些标签。属性值需用引号包围,属性间用空格分隔,如下: ```xml <element a1="value1" a2="value2" ...> content ``` **变量引用** WML允许使用类似Shell...
**WML(无线标记语言)**是Web设计...在提供的`WML.doc`文档中,你可能会找到关于WML更深入的解释,包括其语法示例、实际应用案例以及可能的编码实践,这将帮助你更好地掌握这一已略显过时但依然具有历史价值的技术。
文件名看起来像是教程或示例代码的不同部分,每个文件可能对应一个特定的代码段或解释: - "WAP builds Java applications.htm" 可能是介绍如何使用WAP构建Java应用程序的指南。 - "listing9.htm"到"listing1.htm"...
1. **无需编译**:WMLScript是一种解释性语言,不需要编译即可运行。 2. **广泛的设备支持**:几乎所有现代移动设备都支持WMLScript,包括手机和平板电脑等。 3. **消息传递能力**:WMLScript可以处理短信和其他类型...
WML的基本情况 [TOP] 用于WAP的标记语言就是WML(Wireless Markup Language)。WML的语法跟XML一样,WML是XML的子集。HTML、XML和WML的文件有很多相似之处,这样网页开发者在...WML文件通常使用XML解释器起来解释。
书籍会解释WML的基本语法、标签和页面结构,以及如何创建交互式的无线网页。 4. **WAP Gateway**:作为移动网络与互联网之间的桥梁,WAP网关的角色和工作原理,以及它如何转换标准HTTP请求以适应移动设备。 5. **...
书中可能会详细解释WML语法、卡片(card)、表单(form)和链接(link)的用法。 3. **WAP协议栈**:包括WSP(WAP Session Protocol)、WAP-HTTP、WTLS(WAP Transport Layer Security,类似于HTTPS的安全层)等,...
在“wap wml 开发手册”这个压缩包中,"wml_study"文件可能包含了对WML语法、WAP协议的详细解释、开发实践指南等内容,对于那些想要从事或理解早期移动网站开发的人员来说,是一个不可多得的学习资料。通过深入研究...
4. **微浏览器**:WAP设备上的软件组件,用于解释WML并显示页面内容。 #### WAP的应用与服务 WAP的应用范围广泛,包括但不限于以下几类: - **移动银行与支付**:通过WAP,用户可以随时随地进行账户查询、转账或...
标题“可莱特ST80WML 内装信号音大型LED多层信号灯产品目录.pdf”已经向我们透露了产品的关键信息,接下来我将详细解释这些信息。 首先,“可莱特”很可能是产品品牌的名称,代表着该系列产品的生产商。在选择信号...
- **Wireless Application Environment (WAE)**: 包含微型浏览器、WML、WMLScript解释器等功能。 - **Wireless Session Layer (WSL)**: 管理会话状态。 - **Wireless Transaction Layer (WTP)**: 提供可靠的事务处理...
"**WAP-1.0-WML.pdf**" 文件很可能包含了对WAP 1.0技术和WML语言的详细解释,包括但不限于WAP的架构、WML的语法、实际应用示例以及可能的局限性和改进。这份资料可能是开发者指南、教程或技术白皮书,对于了解和学习...