android中怎么解析复杂的xml文件

android中怎么解析复杂的xml文件,第1张

第一种,使用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文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/10142548.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存