使用kxml解析xml文件(二)
一. 不同XML格式上的差异
<Bil BilID="09120005">
<Product PID="XS000-3">
<Package Needuan="10"/>
<Package Needuan="8"/>
</Product>
</Bil>
与
<channel>
<title>Meerkat: An Open2 Wire Service</title>
<link>http://meerkat.oreillynet.com</link>
<description>
Meerkat is a Web-based syndicated content reader based on RSS ("Rich Site Summary").
RSS is a fantastic, simple-yet-powerful syndication system rapidly gaining momentum.
</description></channel></rss>
的差异:
前者TAG后面有内容,例如<Bil ****></Bil>,后则是<title>text</title>
结束的方式不同<package ****/>
二、处理上的差异
1. KXML在解析时,将<Bil ****>认为是一个START_TAG;因此,对
<Bil ****></Bil>的解析:
紧接着START_TAG的就是END_TAG,中间没有TEXT;而
<title>text</title>的解释是:
START_TAG--->TEXT--->END_TAG
提取<Bil ****>中"***"的方法:
event.getAttributeCount()
event.getAttribute(i)
2.KXML对<Package Needuan="10"/>的解析:
START_TAG---->END_TAG
当KXML遇到/>时,就会产生END_TAG
贴一段代码:
private void parsekXMLItems(XmlParser parser) throws IOException{
// 接收事件类型
//int eventType = parser.getEventType();
ParseEvent event = parser.read ();
// 当事件类型不为文档末尾时
while (event.getType() != Xml.END_DOCUMENT) { // true
// System.out.println("parsekXMLItems");
switch (event.getType()) {// 判断事件类型
case Xml.START_TAG:// 为开始标记时
System.out.print("<" + event.getName());// 输出开始标记
frm.append("<" + event.getName());// 输出开始标记
// 当有属性时,输出属性
System.out.println("availableCount:"+event.getAttributeCount());
if (event.getAttributeCount() >= 1)
for (int i = 0; i < event.getAttributeCount(); i++) {
相关文档:
添加记录到ds保存到xml
DataSet ds = new DataSet("myDs");
//从XML中读取数据
ds.ReadXml(Serve ......
这个是参照ibm网站上的文章做的。
xml源文件:
<?xml version="1.0"?>
<!DOCTYPE rss PUBLIC
"-//Netscape Communications//DTD RSS 0.91//EN"
"http://my.netscape.com/publish/formats/rss-0.91.dtd"
>
<rss version="0.91">
<channel>
<title>Meerkat: An Open2 Wire Servic ......
通常情况下,你可以从服务器上为tree控件取得XML数据 ,你也可以在<mx:Tree>Tag里直接定义格式良好的XML数据。
你可以使用<mx:XML>或者<mx:XMLList>Tag在mxml里定义XML数据。
你可以将XML object直接作为一个层级数据控件的dataProvider,however,if the object changes dynamically,你应该做如下处理: ......