求解xml,各位请指点。

win2000pega 2009-03-30 04:43:22
<?xml version="1.0" encoding="utf-8" ?>
- <xml>
- <CheckOrders>
- <Order ID="0000164398" Type="供货订单" CustName="未来超市" OrderDate="2009-2-6 0:00:00">
<Goods ID="0000397530" Name="鸽牌龙虾片(盒)" Spec="200g" Price="3.700000" OrderCount="2" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
</Order>
- <Order ID="0000164736" Type="供货订单" CustName="大润发(达能)" OrderDate="2009-2-11 0:00:00">
<Goods ID="0000396950" Name="牛奶香脆-巧克力味" Spec="120g" Price="3.100000" OrderCount="1" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
</Order>
- <Order ID="0000164771" Type="供货订单" CustName="家乐福龙城(金帝)" OrderDate="2009-2-12 0:00:00">
<Goods ID="0000399130" Name="金帝情缘巧克力118g" Spec="118g" Price="23.789999" OrderCount="5" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
</Order>
- <Order ID="0000164943" Type="供货订单" CustName="大润发(达能)" OrderDate="2009-2-13 0:00:00">
<Goods ID="0000035320" Name="牛奶佳钙清脆饼干100g (1492)" Spec="100g" Price="1.440000" OrderCount="1" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
<Goods ID="0000005850" Name="达能三层高钙苏打(香葱蔬菜)" Spec="100g" Price="2.240000" OrderCount="1" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
<Goods ID="0000005300" Name="牛奶香脆饼干 (1407)" Spec="125g" Price="3.100000" OrderCount="1" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
</Order>
- <Order ID="0000165027" Type="供货订单" CustName="家乐福南开店" OrderDate="2009-2-25 0:00:00">
<Goods ID="0000397670" Name="百奇-杏仁味" Spec="60g" Price="0.000000" OrderCount="1" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
<Goods ID="0000397660" Name="百奇-牛奶味" Spec="60g" Price="0.000000" OrderCount="3" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
<Goods ID="0000397690" Name="百醇-牛奶夹心" Spec="48g" Price="0.000000" OrderCount="3" OneCheck="0" OperCount="0" OperFlag="" OperDate="" />
</Order>
</CheckOrders>
</xml>
...全文
143 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhj8727 2009-04-01
  • 打赏
  • 举报
回复
这篇还可以,推荐
zhj8727 2009-04-01
  • 打赏
  • 举报
回复


import java.io.StringReader;

import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;

/**
* 2008-4-16下午02:29:40
*
* @author zhanghongzhi<br>
* email:lanfanss@126.com<br>
* desc:用来学习使用kxml来解析xml<br>
* 书上讲解说,kxml是基于事件模型,按着下边的逻辑来读取标记,start_document-start_tag-text-end_tag-end_document<br>
*
*/

public class ReadXmlByKXML {

public static void main(String[] args) throws Exception {
XmlPullParser parser = new KXmlParser();
String sample = "<question text='Is it round?'>\n"
+ " <question text='Is it bright?'>\n"
+ " <answer>It is the Sun!</answer>\n"
+ " <answer>It is a ball!</answer>\n" + " </question>\n"
+ " <answer>I do not know!</answer>\n" + "</question>\n";
System.out.println("-----------待分析的内容------------");
System.out.println(sample);
System.out.println("---------------------------------");
parser.setInput(new StringReader(sample));
// 获取事件类型
int eventType = parser.getEventType();
// 如果不是整个文档的结尾,那么就读取,这样子就达到遍历整个文档的目的
while (eventType != XmlPullParser.END_DOCUMENT) {
// 访问文档根节点
if (eventType == XmlPullParser.START_DOCUMENT) {
System.out.println("当前节点的名称:" + parser.getName());
System.out.println("当前节点下的属性:");
int attrCount = parser.getAttributeCount();
for (int i = 0; i < attrCount; i++) {
System.out.println(parser.getAttributeName(i));
}
} else if (eventType == XmlPullParser.START_TAG) {
System.out
.println("---------start tag------------------------------");
System.out.println("当前节点的名称:" + parser.getName());
System.out.println("当前节点下的属性:");
int attrCount = parser.getAttributeCount();
for (int i = 0; i < attrCount; i++) {
System.out.println(parser.getAttributeName(i) + ":"
+ parser.getAttributeValue(i));
}
// 这里可以根据不同的 节点名称来作出不同的反应,比如text需要单独处理什么

} else if (eventType == XmlPullParser.TEXT) {
System.out.println("---------text tag---------");
// 已经取不到值了
System.out.println("本text属于:" + parser.getName());
System.out.println(parser.getText());
} else if (eventType == XmlPullParser.END_TAG) {
System.out.println("---------end tag---------");
System.out.println("当前节点的名称" + parser.getName());
// 可以在这这里把本tag的内容处理掉,比如类似将其放到某个容器中
}
eventType = parser.next();
}
}
}
kf156 2009-03-30
  • 打赏
  • 举报
回复
多少得先对J2ME有所了解,别人给个示例代码参考,自己根据实际情况修改完善。
下边是一个最基本的XML解析代码,将XML解析后,重新输出到屏幕上
PS:将XML保存成test.xml文件放到资源目录下。


import java.io.IOException;
import java.io.InputStream;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

public class MyMidlet extends MIDlet {

private void parseUsingKXML(InputStream is) throws XmlPullParserException {
try {

KXmlParser parser = new KXmlParser();// 实例化
parser.setInput(is, "utf-8");
parsekXMLItems(parser);
} catch (IOException e) {
e.printStackTrace();
}
}


private void parsekXMLItems(KXmlParser parser) throws IOException,
XmlPullParserException {

// 接收事件类型
int eventType = parser.getEventType();
// 当事件类型不为文档末尾时
while (eventType != XmlPullParser.END_DOCUMENT) { // true
// System.out.println("parsekXMLItems");
switch (eventType) {// 判断事件类型

case XmlPullParser.START_TAG:// 为开始标记时

System.out.print("<" + parser.getName());// 输出开始标记

// 当有属性时,输出属性
if (parser.getAttributeCount() >= 1)
for (int i = 0; i < parser.getAttributeCount(); i++) {
// 输出属性名称
System.out
.print(" " + parser.getAttributeName(i) + "=");
// 输出属性值
System.out.print("\"" + parser.getAttributeValue(i)
+ "\"");
}

System.out.print(">");
break;

case XmlPullParser.END_TAG:// 为结束标记时
System.out.print("</" + parser.getName() + ">");

break;

case XmlPullParser.TEXT:// 为文档正文时
// if (!parser.getText().trim().equals("")) {
System.out.print(parser.getText());
// }

break;

case XmlPullParser.END_DOCUMENT:
return;
}
eventType = parser.next();
}
System.out.println();
}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO 自动生成方法存根

}

protected void pauseApp() {
// TODO 自动生成方法存根

}

protected void startApp() throws MIDletStateChangeException {
try {

InputStream is = getClass().getResourceAsStream("/test.xml");
parseUsingKXML(is);
} catch (XmlPullParserException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}

}
}

win2000pega 2009-03-30
  • 打赏
  • 举报
回复
不会写代码呀,帮忙弄一下吧,俺才学习三天j2me,以前是做delphi的。
guo2478858 2009-03-30
  • 打赏
  • 举报
回复
kxml
javacaspnet 2009-03-30
  • 打赏
  • 举报
回复
帮顶,接分

13,097

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧