使用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++) {
相关文档:
XML 序列化可以采用从简单到复杂的多种形式。例如,可以序列化只包含公共字段和公共属性的类,如 XML 序列化简介中所示。下面的代码示例讨论各种高级方案,包括如何使用 XML 序列化生成符合特定 XML 架构 (XSD) 文档的 XML 流。
序列化数据集
除了序列化公共类的实例外,还可序列化 DataSet 的实例,如下面的代码示例所示 ......
接上一篇《C#写XML的简单例子》
这个例子要修改XML文件中结点的属性和和元素的文本
1 原xml文件 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="love" ISBN="1234123">
<title>who am i </title>
&l ......
这个是参照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,你应该做如下处理: ......
使用XMLList读取XML数据
XML对象提供了一个返回XMLList类型的方法elements(),既返回所有XML对象的子元素节点,随后我们可以通过for each语句循环则可访问到整个XML数据内容。以上面创建内部XML文档的XML数据为例,详细见如下代码块:
varlist:XMLList=pXml.elements();
foreach(varelement:XMLinlist)
{
// ......