首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

! 跪 求,J2ME中怎么解析xml

2012-01-28 
!急 跪求,,,J2ME中如何解析xml我在网上找了好多的东西, 好多的都不行,需要的包,我下载了一个有一个,我csdn

!急 跪 求,,,J2ME中如何解析xml
我在网上找了好多的东西, 好多的都不行, 需要的包,我下载了一个有一个,我csdn的50多分现在就只剩下了 3分了, 哭!!!
  现在请求大家帮主,j2me如何解析xml, 如果需要包,请给出下载地址, 谢谢,,,,,

[解决办法]
KXML还是蛮好用的,搜索一下示例代码吧
[解决办法]
木有,自己动手丰衣足食。。。。
[解决办法]
j2me没有现成的jar包,就算有jar包也加不到程序中,所以只有自己动手开发了
[解决办法]
这个有官网的! 可以去试一下。里面有6种解析的包。
[解决办法]
kxml
的解析包,我的资源里好像有,1个点,你下了试试。
[解决办法]
kxml2-2.3.0.jar,网上就有。。搜一下吧
[解决办法]
kxml挺好用的啊。。。
[解决办法]

import java.io.*; 
import java.util.*; 
import org.dom4j.*;

1、将XML文件的内容转化为String
/** 
* doc2String 
* 将xml文档内容转为String 
* @return 字符串 
* @param document 
*/ 
public static String doc2String(Document document) 

String s = ""; 
try 

//使用输出流来进行转化 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
//使用GB2312编码 
OutputFormat format = new OutputFormat(" ", true, "GB2312"); 
XMLWriter writer = new XMLWriter(out, format); 
writer.write(document); 
s = out.toString("GB2312"); 
}catch(Exception ex) 
{
ex.printStackTrace(); 
}
return s; 
}

2、将符合XML格式的String 转化为XML Document
/** 
* string2Document 
* 将字符串转为Document 
* @return
* @param s xml格式的字符串 
*/ 
public static Document string2Document(String s) 

Document doc = null; 
try 

doc = DocumentHelper.parseText(s); 
}catch(Exception ex) 
{
ex.printStackTrace(); 

return doc; 
}

3、将Document对象保存为一个xml文件到本地
/** 
* doc2XmlFile 
* 将Document对象保存为一个xml文件到本地 
* @return true:保存成功 flase:失败 
* @param filename 保存的文件名 
* @param document 需要保存的document对象 
*/ 
public static boolean doc2XmlFile(Document document,String filename) 

boolean flag = true; 
try 

/* 将document中的内容写入文件中 */ 
//默认为UTF-8格式,指定为"GB2312" 
OutputFormat format = OutputFormat.createPrettyPrint(); 
format.setEncoding("GB2312"); 
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format); 
writer.write(document); 
writer.close();
}catch(Exception ex) 

flag = false; 
ex.printStackTrace(); 

return flag;
}

4、将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败
/** 
* string2XmlFile 
* 将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败 
* @return true:保存成功 flase:失败 


* @param filename 保存的文件名 
* @param str 需要保存的字符串 
*/ 
public static boolean string2XmlFile(String str,String filename) 

boolean flag = true; 
try 

Document doc = DocumentHelper.parseText(str);
flag = doc2XmlFile(doc,filename); 
}catch (Exception ex) 

flag = false; 
ex.printStackTrace(); 

return flag; 
}

5、载入一个xml文档
/** 
* load 
* 载入一个xml文档 
* @return 成功返回Document对象,失败返回null 
* @param uri 文件路径 
*/ 
public static Document load(String filename) 

Document document = null; 
try
{
SAXReader saxReader = new SAXReader(); 
document = saxReader.read(new File(filename)); 

catch (Exception ex){ 
ex.printStackTrace(); 
}
return document; 
}

 6、演示String保存为xml文件
/** 
* xmlWriteDemoByString 
* 演示String保存为xml文件 
*/ 
public void xmlWriteDemoByString() 

String s = ""; 
/** xml格式标题 "<?xml version='1.0' encoding='GB2312'?>" 可以不用写*/ 
s = "<config>\r\n" 
+" <ftp name='DongDian'>\r\n" 
+" <ftp-host>127.0.0.1</ftp-host>\r\n" 
+" <ftp-port>21</ftp-port>\r\n" 
+" <ftp-user>cxl</ftp-user>\r\n" 
+" <ftp-pwd>longshine</ftp-pwd>\r\n" 
+" <!-- ftp最多尝试连接次数 -->\r\n" 
+" <ftp-try>50</ftp-try>\r\n" 
+" <!-- ftp尝试连接延迟时间 -->\r\n" 
+" <ftp-delay>10</ftp-delay>\r\n" 
+" </ftp>\r\n" 
+"</config>\r\n"; 
//将文件生成到classes文件夹所在的目录里
string2XmlFile(s,"xmlWriteDemoByString.xml");
//将文件生成到classes文件夹里
string2XmlFile(s,"classes/xmlWriteDemoByString.xml");
}

7、演示手动创建一个Document,并保存为XML文件
/** 
* 演示手动创建一个Document,并保存为XML文件 
*/ 
public void xmlWriteDemoByDocument() 

/** 建立document对象 */ 
Document document = DocumentHelper.createDocument(); 
/** 建立config根节点 */ 
Element configElement = document.addElement("config"); 
/** 建立ftp节点 */ 
configElement.addComment("ftp配置"); 
Element ftpElement = configElement.addElement("ftp"); 
ftpElement.addAttribute("name","DongDian"); 
/** ftp 属性配置 */ 
Element hostElement = ftpElement.addElement("ftp-host"); 
hostElement.setText("127.0.0.1"); 
(ftpElement.addElement("ftp-port")).setText("21"); 
(ftpElement.addElement("ftp-user")).setText("cxl"); 
(ftpElement.addElement("ftp-pwd")).setText("longshine"); 
ftpElement.addComment("ftp最多尝试连接次数"); 
(ftpElement.addElement("ftp-try")).setText("50"); 
ftpElement.addComment("ftp尝试连接延迟时间"); 
(ftpElement.addElement("ftp-delay")).setText("10");
/** 保存Document */ 


doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml"); 
}

8、演示读取文件的具体某个节点的值
/** 
* 演示读取文件的具体某个节点的值
*/ 
public static void xmlReadDemo() 

Document doc = load("classes/xmlWriteDemoByDocument.xml"); 
//Element root = doc.getRootElement(); 
/** 先用xpath查找所有ftp节点 并输出它的name属性值*/ 
List list = doc.selectNodes("/config/ftp" ); 
Iterator it = list.iterator(); 
while(it.hasNext()) 
{
Element ftpElement = (Element)it.next(); 
System.out.println("ftp_name="+ftpElement.attribute("name").getValue()); 

/** 直接用属性path取得name值 */ 
list = doc.selectNodes("/config/ftp/@name" ); 
it = list.iterator(); 
while(it.hasNext()) 
{
Attribute attribute = (Attribute)it.next(); 
System.out.println("@name="+attribute.getValue()); 

/** 直接取得DongDian ftp的 ftp-host 的值 */ 
list = doc.selectNodes("/config/ftp/ftp-host" ); 
it = list.iterator(); 
Element hostElement=(Element)it.next(); 
System.out.println("ftp_host="+hostElement.getText()); 
}

9、修改或删除某个值或属性
/** ftp节点删除ftp-host节点 */ 
ftpElement.remove(hostElement);
/** ftp节点删除name属性 */ 
ftpElement.remove(nameAttribute); 
/** 修改ftp-host的值 */ 
hostElement.setText("192.168.0.1");
/** 修改ftp节点name属性的值 */ 
nameAttribute.setValue("ChiFeng");
[解决办法]
补充:需要以下两个JAR包
dom4j-1.6.jar
jaxen-1.1-beta-4.jar
[解决办法]
应给是没有XmlPullParser吧。
Kxml下载地址:http://sourceforge.net/projects/kxml/files/kxml2/
Kxml源码中缺少的Xmlpull包下载地址:
http://xmlpull.org/v1/download/xmlpull_1_1_3_4c_src.tgz
[解决办法]
在j2me里面,解析xml文件都是用kxml,绝对好用!如果觉得用别人的不保险,自己写一个解析器也是一样!
[解决办法]
用sax 解析 效率高

热点排行