解析Android上的XML [英] Parse XML on Android

查看:138
本文介绍了解析Android上的XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在Android应用程序使用API​​为我们的计费系统,但我有麻烦找出如何解析它返回的XML。这里是我的功能看起来像迄今...

 公共无效ParseData(字符串XMLDATA)
{
    尝试
    {
        //文件生成器
        工厂的DocumentBuilderFactory = DocumentBuilderFactory.newInstance();
        的DocumentBuilder分贝= factory.newDocumentBuilder();        //输入流
        InputSource的inStream中=新的InputSource();
        inStream.setCharacterStream(新StringReader(XMLDATA));        //解析文档转换为节点列表
        文档的DOC = db.parse(插播广告);
        节点列表节点= doc.getElementsByTagName(准考证);        //循环节点列表和检索元素数据
        的for(int i = 0; I< nodes.getLength();我++)
        {
            节点node = nodes.item(ⅰ);            如果(节点的instanceof元)
            {
                子元素=(元素)节点;
                字符串ID = child.getAttribute(ID);
            }
        }
    }
    赶上(SAXException的E)
    {    }
}

和这里是XML数据的样子时返回。我需要遍历各拉各的元素,但我找不出如何做到这一点的DOM解析器。

 < whmcsapi>
 <作用> gettickets< /作用>
 <&结果GT;成功与LT; /&结果GT;
 &所述;使用totalResults→1&下; /使用totalResults>
 &所述; startnumber大于0&下; / startnumber>
 &所述; numreturned→1&下; / numreturned>
 <门票>
  <门票>
   < ID> 1 LT; / ID>
   <&TID GT; 557168< / TID>
   &所述; DEPTID→1&下; / DEPTID>
   <用户id> 1 LT; /用户用户名与GT;
   <名称><![CDATA [阵列]>< /名称>
   <电子邮件和GT;< /电子邮件>
   < CC>< / CC>
   &所述c取代; TmDEga5v&下; / c取代;
   <日期和GT; 2009-08-03 23:14:32< /日期和GT;
   <个体GT;<![CDATA [测试票务]>< /受试者GT;
   <&消息GT;<![CDATA [这是一个测试票>   ----------------------------
   IP地址:xxx.xxx.xxx.xxx]>< /消息>
   <状态>&开放LT; /状态>
   <优先>中< /优先级>
   <管理>< /管理>
   <&附件GT;< /附件>
   < lastreply> 2009-08-04 12:14:18< / lastreply>
   <旗> 0℃; /标志>
   <服务与GT;< /服务>
  < /票务>
 < /票>
< / whmcsapi>


解决方案

下面是最真棒的答案和解决方案,以XML解析的问题之一。

非常详细,并总是惊人的屋大维写得很好:<一href=\"http://stackoverflow.com/questions/4827344/how-to-parse-xml-using-the-sax-parser/4828765#4828765\">here

I am trying to use the API for our billing system in an Android Application, but I am having trouble figuring out how to parse the XML that it returns. Here is what my function looks like thus far...

public void ParseData(String xmlData)
{
    try
    {
        // Document Builder
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = factory.newDocumentBuilder();

        // Input Stream
        InputSource inStream = new InputSource();
        inStream.setCharacterStream(new StringReader(xmlData));

        // Parse Document into a NodeList
        Document doc = db.parse(inStream);
        NodeList nodes = doc.getElementsByTagName("ticket");

        // Loop NodeList and Retrieve Element Data
        for(int i = 0; i < nodes.getLength(); i++)
        {
            Node node = nodes.item(i);

            if (node instanceof Element)
            {
                Element child = (Element)node;
                String id = child.getAttribute("id");
            }
        }
    }
    catch(SAXException e)
    {

    }
}

and here is what the XML data looks like that is returned. I need to loop through each and pull each element out, but I cant figure out how to do that with the DOM parser.

<whmcsapi> 
 <action>gettickets</action> 
 <result>success</result> 
 <totalresults>1</totalresults> 
 <startnumber>0</startnumber> 
 <numreturned>1</numreturned> 
 <tickets> 
  <ticket> 
   <id>1</id> 
   <tid>557168</tid> 
   <deptid>1</deptid> 
   <userid>1</userid> 
   <name><![CDATA[Array]]></name> 
   <email></email> 
   <cc></cc> 
   <c>TmDEga5v</c> 
   <date>2009-08-03 23:14:32</date> 
   <subject><![CDATA[Test Ticket]]></subject> 
   <message><![CDATA[This is a test ticket> 

   ---------------------------- 
   IP Address: xxx.xxx.xxx.xxx]]></message> 
   <status>Open</status> 
   <priority>Medium</priority> 
   <admin></admin> 
   <attachment></attachment> 
   <lastreply>2009-08-04 12:14:18</lastreply> 
   <flag>0</flag> 
   <service></service> 
  </ticket> 
 </tickets> 
</whmcsapi>

解决方案

Here's one of the most awesome answer and solution to XML parsing issues.

Quite detailed and very well written by always amazing Octavian : here

这篇关于解析Android上的XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆