
第一种,使用SAXReader
[java] view plain copy
InputStream in = DBHelpergetDBHelper()getContext()getResources()
getAssets()open("provincexml");
InputStream is = IOHelperfromInputStreamToInputStreamInCharset(in,"utf-8");
SAXReader sr = new SAXReader();// 获取读取xml的对象。
Document document = srread(is);
Element root = documentgetRootElement();
当然,使用这种方法还是比较麻烦的,因为需要引入dom4j的jar包。
第二种,直接使用XmlPullParser
我们查看XmlResourceParser源码的时候,就会发现XmlResourceParser实现了两个接口,AttributeSet和XmlPullParser,而实际上XmlPullParser就是帮助我们去读xml文件的。
当然还是需要获得inputstream流,但是优势就是不用引入jar包而已。
[java] view plain copy
public void test(InputStream in) {
XmlPullParserFactory factory;
try {
factory = XmlPullParserFactorynewInstance();
factorysetNamespaceAware(true);
XmlPullParser xpp = factorynewPullParser();
xppsetInput(in, "UTF-8");
int evtType = xppgetEventType();
// 一直循环,直到文档结束
while (evtType != XmlPullParserEND_DOCUMENT) {
switch (evtType) {
case XmlPullParserSTART_TAG:
String tag = xppgetName();
Systemoutprintln(tag);
break;
case XmlPullParserEND_TAG:
break;
default:
break;
}
//获得下一个节点的信息
evtType = xppnext();
}
} catch (Exception e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
定义好对象关系的类。
解析以Course为例子
public static List<Course> getCourseList(InputStream stream){List<Course> list=new ArrayList<Course>();
//得到 DocumentBuilderFactory 对象, 由该对象可以得到 DocumentBuilder 对象
DocumentBuilderFactory factory=DocumentBuilderFactorynewInstance();
try {
//得到DocumentBuilder对象
DocumentBuilder builder=factorynewDocumentBuilder();
//得到代表整个xml的Document对象
Document document=builderparse(stream);
//得到 "根节点"
Element root=documentgetDocumentElement();
//获取根节点的所有items的节点
NodeList items=rootgetElementsByTagName("item");
//遍历所有节点
for(int i=0;i<itemsgetLength();i++){
Course course=new Course();
Element item=(Element)itemsitem(i);
coursesetName(itemgetAttribute("name"));
//再枚举子节点
listadd(course);
}
} catch (ParserConfigurationException e) {
eprintStackTrace();
} catch (SAXException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
}
return list;
}
根据标题应该是想修改已获得的xml格式的节点值,在android开发中JAVA解析XML有一种DOM方式可以修改xml的节点值,但是由于android的内存相对较小,所以一般在android中用 XmlSerializer来重新构建XML文件来变相修改。
XmlDocumentdoc=newXmlDocument();//创建XmlDocument对象\x0d\docLoad(ServerMapPath("newXmlxml"));//载入文件\x0d\\x0d\XmlNodenode=docDocumentElement;\x0d\\x0d\XmlNodefirstnode=nodeFirstChild;//获取根节点
以上就是关于android中怎么解析复杂的xml文件全部的内容,包括:android中怎么解析复杂的xml文件、android xml资源数组的问题 xml文件内容如下,我要怎么获取item键值对中name这个、如何获取android 下的StreamingAssets文件夹中的xml文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)