RFC: XmlPull API 1.2
Aleksander Slominski <[email protected]> Wed, 29 Nov 2006 13:21:52 -0500
| Newsgroups | gmane.text.xml.xmlpull.devel |
|---|---|
| Message-ID | <[email protected]> |
--eLHuzR2lF9EoZnjqkNS9KymilcyEUmINpUIauZD
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
hi,
it is some time we did any modification to XmlPull API 1.1 (it is
remarkably stable) but there are few minor issues and improvements
recorded over years (and J2ME devices get bigger memory nowadays ...) so
it looks like good time for incremental release i.e. 1.2
based on list of issues and improvements (RFE) in bugzilla two stands out:
1) http://www.extreme.indiana.edu/bugzilla/show_bug.cgi?id=167
skipSubTree() looks like a very useful method to have implemented in
parser (skipping can be fast) - that would add to XmlPullParser method:
/**
* Skip sub tree on which the parser is currently positioned on.
* <br>NOTE: parser must be on START_TAG and when function returns
* parser will be positioned on matching END_TAG
*
* This method is typically optimized by parser but the its logic
should follow this:
* <code>
* require(XmlPullParser.START_TAG, null, null);
* int level = 1;
* while(level > 0) {
* int eventType = next();
* if(eventType == XmlPullParser.END_TAG) {
* --level;
* } else if(eventType == XmlPullParser.START_TAG) {
* ++level;
* }
* }
* </code>
*/
public void skipSubTree() throws XmlPullParserException, IOException;
2) http://www.extreme.indiana.edu/bugzilla/show_bug.cgi?id=240
this is long standing issue related to how setPrefix() works and how it
should be working more like xmlns:pref='...' (so digital signatures code
works well) - that would add to XmlSerializer three new methods with
prefix as an argument:
public XmlSerializer startTag (String prefix, String namespace, String
name)
public XmlSerializer endTag (String prefix, String namespace, String name)
public XmlSerializer attribute (String prefix, String namespace, String
name, String value)
if there are any other issues/improvements/etc please let us know (send
email to xmlpull-dev and log the issues in bugzilla)
both XPP3/5 and kXML2 plan to implement soon XmlPull API 1.2
thanks,
Alek Slominski (& Stefan Haustein)
--eLHuzR2lF9EoZnjqkNS9KymilcyEUmINpUIauZD
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<!-- Network content -->
<body style="background-color: #ffffff;">
<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="width:655px; position:relative;">
<div id="ygrp-msg" style="width: 490px; padding: 0 15px 0 0; float:left; z-index:1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->
<div id="ygrp-text">
<p>hi,<br>
<br>
it is some time we did any modification to XmlPull API 1.1 (it is<br>
remarkably stable) but there are few minor issues and improvements<br>
recorded over years (and J2ME devices get bigger memory nowadays ...) so<br>
it looks like good time for incremental release i.e. 1.2<br>
<br>
based on list of issues and improvements (RFE) in bugzilla two stands out:<br>
<br>
1) <a href="http://www.extreme.indiana.edu/bugzilla/show_bug.cgi?id=167">http://www.extreme.<wbr>indiana.edu/<wbr>bugzilla/<wbr>show_bug.<wbr>cgi?id=167</a><br>
skipSubTree(<wbr>) looks like a very useful method to have implemented in<br>
parser (skipping can be fast) - that would add to XmlPullParser method:<br>
/**<br>
* Skip sub tree on which the parser is currently positioned on.<br>
* <br>NOTE: parser must be on START_TAG and when function returns<br>
* parser will be positioned on matching END_TAG<br>
*<br>
* This method is typically optimized by parser but the its logic<br>
should follow this:<br>
* <code><br>
* require(XmlPullPars<wbr>er.START_<wbr>TAG, null, null);<br>
* int level = 1;<br>
* while(level > 0) {<br>
* int eventType = next();<br>
* if(eventType == XmlPullParser.<wbr>END_TAG) {<br>
* --level;<br>
* } else if(eventType == XmlPullParser.<wbr>START_TAG) {<br>
* ++level;<br>
* }<br>
* }<br>
* </code><br>
*/<br>
public void skipSubTree(<wbr>) throws XmlPullParserExcept<wbr>ion, IOException;<br>
<br>
2) <a href="http://www.extreme.indiana.edu/bugzilla/show_bug.cgi?id=240">http://www.extreme.<wbr>indiana.edu/<wbr>bugzilla/<wbr>show_bug.<wbr>cgi?id=240</a><br>
this is long standing issue related to how setPrefix() works and how it<br>
should be working more like xmlns:pref='<wbr>...' (so digital signatures code<br>
works well) - that would add to XmlSerializer three new methods with<br>
prefix as an argument:<br>
<br>
public XmlSerializer startTag (String prefix, String namespace, String<br>
name)<br>
public XmlSerializer endTag (String prefix, String namespace, String name)<br>
public XmlSerializer attribute (String prefix, String namespace, String<br>
name, String value)<br>
<br>
if there are any other issues/improvements<wbr>/etc please let us know (send<br>
email to xmlpull-dev and log the issues in bugzilla)<br>
<br>
both XPP3/5 and kXML2 plan to implement soon XmlPull API 1.2<br>
<br>
thanks,<br>
<br>
Alek Slominski (& Stefan Haustein)<br>
<br>
</p>
</div>
<!--~-|**|PrettyHtmlStart|**|-~-->
<span width="1" style="color: white;">__._,_.___</span>
<!-- Start the section with Message In topic -->
<div id="ygrp-actbar">
<span class="left">
<a href="http://groups.yahoo.com/group/xmlpull-dev/message/870;_ylc=X3oDMTMyMzYxbW5jBF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBG1zZ0lkAzg3MARzZWMDZnRyBHNsawN2dHBjBHN0aW1lAzExNjQ4MjYwMDkEdHBjSWQDODcw">
Messages in this topic </a> (<span class="bld">1</span>)
</span>
<a href="http://groups.yahoo.com/group/xmlpull-dev/post;_ylc=X3oDMTJvbDJrNDlvBF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBG1zZ0lkAzg3MARzZWMDZnRyBHNsawNycGx5BHN0aW1lAzExNjQ4MjYwMDk-?act=reply&messageNum=870">
<span class="bld">
Reply </span> (via web post)
</a> |
<a href="http://groups.yahoo.com/group/xmlpull-dev/post;_ylc=X3oDMTJlcW5qN3ZpBF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTE2NDgyNjAwOQ--" class="bld">
Start a new topic </a>
</div>
<!------- Start Nav Bar ------>
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vitnav">
<a href="http://groups.yahoo.com/group/xmlpull-dev/messages;_ylc=X3oDMTJlZXFmNmoyBF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwNmdHIEc2xrA21zZ3MEc3RpbWUDMTE2NDgyNjAwOQ--">Messages</a>
</div>
<!-- |**|end egp html banner|**| -->
<!-- Do not have place to put it yet -->
<div id="ygrp-grft">
</div>
<!-- yahoo logo -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-ft">
<a href="http://groups.yahoo.com/;_ylc=X3oDMTJkZHNiOG1hBF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMTY0ODI2MDA5">
<img src="http://us.i1.yimg.com/us.yimg.com/i/yg/img/logo/ma_grp_160.gif" height="15" width="106" border="0" alt="Yahoo! Groups"></a> <br>
<a href="http://groups.yahoo.com/group/xmlpull-dev/join;_ylc=X3oDMTJmbmo3a29pBF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzExNjQ4MjYwMDk-">Change settings via the Web</a> (Yahoo! ID required) <br>
Change settings via email: <a href="mailto:[email protected]?subject=Email Delivery: Digest">Switch delivery to Daily Digest</a> | <a href = "mailto:[email protected]?subject=Change Delivery Format: Traditional">Switch format to Traditional</a> <br>
<a href="http://groups.yahoo.com/group/xmlpull-dev;_ylc=X3oDMTJkN210Y3NhBF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMTY0ODI2MDA5">
Visit Your Group
</a> |
<a href="http://docs.yahoo.com/info/terms/">
Yahoo! Groups Terms of Use </a> |
<a href="mailto:[email protected]?subject=">
Unsubscribe </a>
</div> <!-- |**|end egp html banner|**| -->
</div> <!-- ygrp-msg -->
<!-- Sponsor -->
<!-- |**|begin egp html banner|**| -->
<div id="ygrp-sponsor" style="width:140px;float: left; clear: none; margin-left: 5px; background:white; margin-bottom:25px ;position:absolute; top:0; right: 0;">
<!-- Network content -->
<!-- Start vitality -->
<div id="ygrp-vital">
<div id="vithd">Recent Activity</div>
<ul style="list-style-type:none; padding: 0; margin: 2px 0;">
<li style="clear: both;">
<div class="ct" style="float: right;"><span style="display:none"> </span>1</div>
<div class="cat"><a href="http://groups.yahoo.com/group/xmlpull-dev/members;_ylc=X3oDMTJmaTllN20xBF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzExNjQ4MjYwMDk-">New Members</a></div>
</li>
</ul>
<a href="http://groups.yahoo.com/group/xmlpull-dev;_ylc=X3oDMTJlYjBkdmt2BF9TAzk3MzU5NzE0BGdycElkAzY0NTYyNTUEZ3Jwc3BJZAMxNzA2MDMwMzkwBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTE2NDgyNjAwOQ--">
Visit Your Group </a>
</div>
<div id="hd">SPONSORED LINKS</div>
<div id="ov">
<ul>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjM21wamtwBF9TAzk3MzU5NzE0BF9wAzEEZ3JwSWQDNjQ1NjI1NQRncnBzcElkAzE3MDYwMzAzOTAEc2VjA3NsbW9kBHN0aW1lAzExNjQ4MjYwMTE-?t=ms&k=Xml+sql+server&w1=Xml+sql+server&w2=Xml+content+management&w3=Xml+document&w4=Rss+xml&w5=Xml+training&c=5&s=97&g=2&.sig=D5pjkrPnFZ4IBdgwTFPeNw">Xml sql server</a></li>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjODM5NG01BF9TAzk3MzU5NzE0BF9wAzIEZ3JwSWQDNjQ1NjI1NQRncnBzcElkAzE3MDYwMzAzOTAEc2VjA3NsbW9kBHN0aW1lAzExNjQ4MjYwMTE-?t=ms&k=Xml+content+management&w1=Xml+sql+server&w2=Xml+content+management&w3=Xml+document&w4=Rss+xml&w5=Xml+training&c=5&s=97&g=2&.sig=-MKTBHng5j2E0enZ0lu6MA">Xml content management</a></li>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjOTVuZWx1BF9TAzk3MzU5NzE0BF9wAzMEZ3JwSWQDNjQ1NjI1NQRncnBzcElkAzE3MDYwMzAzOTAEc2VjA3NsbW9kBHN0aW1lAzExNjQ4MjYwMTE-?t=ms&k=Xml+document&w1=Xml+sql+server&w2=Xml+content+management&w3=Xml+document&w4=Rss+xml&w5=Xml+training&c=5&s=97&g=2&.sig=4a401E3_nwYau1YewoooSg">Xml document</a></li>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjNW0yNnRiBF9TAzk3MzU5NzE0BF9wAzQEZ3JwSWQDNjQ1NjI1NQRncnBzcElkAzE3MDYwMzAzOTAEc2VjA3NsbW9kBHN0aW1lAzExNjQ4MjYwMTE-?t=ms&k=Rss+xml&w1=Xml+sql+server&w2=Xml+content+management&w3=Xml+document&w4=Rss+xml&w5=Xml+training&c=5&s=97&g=2&.sig=Nz2s-9B48CdGLIFKmmKhHw">Rss xml</a></li>
<li><a href="http://groups.yahoo.com/gads;_ylc=X3oDMTJjOHRvM2N0BF9TAzk3MzU5NzE0BF9wAzUEZ3JwSWQDNjQ1NjI1NQRncnBzcElkAzE3MDYwMzAzOTAEc2VjA3NsbW9kBHN0aW1lAzExNjQ4MjYwMTE-?t=ms&k=Xml+training&w1=Xml+sql+server&w2=Xml+content+management&w3=Xml+document&w4=Rss+xml&w5=Xml+training&c=5&s=97&g=2&.sig=83TLc5fP2HqZY9QrkpSu3w">Xml training</a></li>
</ul>
</div>
<!-- Network content -->
<div id="nc">
<div class="ad">
<div id="hd1">Ads on Yahoo!</div>
<p><a href="http://us.ard.yahoo.com/SIG=12hl92nhp/M=493064.8985663.9760769.8674578/D=groups/S=1706030390:NC/Y=YAHOO/EXP=1164833211/A=3848643/R=0/SIG=131q47hek/*http://searchmarketing.yahoo.com/arp/srchv2.php?o=US2005&cmp=Yahoo&ctv=Groups4&s=Y&s2=&s3=&b=50">Learn more now.</a></p>
<p>Reach customers</p>
<p>searching for you.</p> </div>
<div class="ad">
<div id="hd1">Y! Toolbar</div>
<p><a href="http://us.lrd.yahoo.com/_ylc=X3oDMTJva21kNWNoBF9TAzk3MzU5NzE0BF9wAzIEZ3JwSWQDNjQ1NjI1NQRncnBzcElkAzE3MDYwMzAzOTAEc2VjA25jbW9kBHNsawN0b29sYmFyBHN0aW1lAzExNjQ4MjYwMDk-;_ylg=1/SIG=11c6dvmk9/**http%3a//toolbar.yahoo.com/%3f.cpdl=ygrps">Get it Free!</a></p>
<p>easy 1-click access</p>
<p>to your groups.</p>
</div>
<div class="ad">
<div id="hd1">Yahoo! Groups</div>
<p><a href="http://groups.yahoo.com/start;_ylc=X3oDMTJvZXFlNTRqBF9TAzk3MzU5NzE0BF9wAzMEZ3JwSWQDNjQ1NjI1NQRncnBzcElkAzE3MDYwMzAzOTAEc2VjA25jbW9kBHNsawNncm91cHMyBHN0aW1lAzExNjQ4MjYwMDk-">Start a group</a></p>
<p>in 3 easy steps.</p>
<p>Connect with others.</p>
</div>
</div>
</div> <!-- |**|end egp html banner|**| -->
<div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div> <img src="http://geo.yahoo.com/serv?s=97359714/grpId=6456255/grpspId=1706030390/msgId=870/stime=1164826009/nc1=3848643/nc2=2/nc3=3" width="1" height="1"> <br>
<span style="color: white;">__,_._,___</span>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</body>
<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
<style type="text/css">
<!--
#ygrp-mlmsg {font-size:13px; font-family: arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}
#ygrp-mlmsg table {font-size:inherit;font:100%;}
#ygrp-mlmsg select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}
#ygrp-mlmsg pre, code {font:115% monospace;*font-size:100%;}
#ygrp-mlmsg * {line-height:1.22em;}
#ygrp-text{
font-family: Georgia;
}
#ygrp-text p{
margin: 0 0 1em 0;
}
#ygrp-tpmsgs{
font-family: Arial;
clear: both;
}
#ygrp-vitnav{
padding-top: 10px;
font-family: Verdana;
font-size: 77%;
margin: 0;
}
#ygrp-vitnav a{
padding: 0 1px;
}
#ygrp-actbar{
clear: both;
margin: 25px 0;
white-space:nowrap;
color: #666;
text-align: right;
}
#ygrp-actbar .left{
float: left;
white-space:nowrap;
}
.bld{font-weight:bold;}
#ygrp-grft{
font-family: Verdana;
font-size: 77%;
padding: 15px 0;
}
#ygrp-ft{
font-family: verdana;
font-size: 77%;
border-top: 1px solid #666;
padding: 5px 0;
}
#ygrp-mlmsg #logo{
padding-bottom: 10px;
}
#ygrp-vital{
background-color: #e0ecee;
margin-bottom: 20px;
padding: 2px 0 8px 8px;
}
#ygrp-vital #vithd{
font-size: 77%;
font-family: Verdana;
font-weight: bold;
color: #333;
text-transform: uppercase;
}
#ygrp-vital ul{
padding: 0;
margin: 2px 0;
}
#ygrp-vital ul li{
list-style-type: none;
clear: both;
border: 1px solid #e0ecee;
}
#ygrp-vital ul li .ct{
font-weight: bold;
color: #ff7900;
float: right;
width: 2em;
text-align:right;
padding-right: .5em;
}
#ygrp-vital ul li .cat{
font-weight: bold;
}
#ygrp-vital a {
text-decoration: none;
}
#ygrp-vital a:hover{
text-decoration: underline;
}
#ygrp-sponsor #hd{
color: #999;
font-size: 77%;
}
#ygrp-sponsor #ov{
padding: 6px 13px;
background-color: #e0ecee;
margin-bottom: 20px;
}
#ygrp-sponsor #ov ul{
padding: 0 0 0 8px;
margin: 0;
}
#ygrp-sponsor #ov li{
list-style-type: square;
padding: 6px 0;
font-size: 77%;
}
#ygrp-sponsor #ov li a{
text-decoration: none;
font-size: 130%;
}
#ygrp-sponsor #nc {
background-color: #eee;
margin-bottom: 20px;
padding: 0 8px;
}
#ygrp-sponsor .ad{
padding: 8px 0;
}
#ygrp-sponsor .ad #hd1{
font-family: Arial;
font-weight: bold;
color: #628c2a;
font-size: 100%;
line-height: 122%;
}
#ygrp-sponsor .ad a{
text-decoration: none;
}
#ygrp-sponsor .ad a:hover{
text-decoration: underline;
}
#ygrp-sponsor .ad p{
margin: 0;
}
o {font-size: 0; }
.MsoNormal {
margin: 0 0 0 0;
}
#ygrp-text tt{
font-size: 120%;
}
blockquote{margin: 0 0 0 4px;}
.replbq {margin:4}
-->
</style>
</head>
<!--~-|**|PrettyHtmlEnd|**|-~-->
</html><!--End group email -->
--eLHuzR2lF9EoZnjqkNS9KymilcyEUmINpUIauZD--