楼主,我这里有记录,你可以参考参考哈
http://blog.csdn.net/whu_zhangmin/article/details/13144529

解决方案 »

  1.   

    自带的pull解析器就可以读取了啊,在starttag里读属性啊。
      

  2.   


    你这个“成功”是属性,因此有两个方法获取属性名和属性值的:
    getAttributeName()
    getAttributeValue()case XmlPullParser.START_TAG:
        
        
        if (xmlParser.getAttributeCount() == 1) {
            String attrValue = xmlParser.getAttributeValue(0);//得到的值就是“成功”
        }
      

  3.   

    String result = "";
    int eventType = parser.getEventType();
    while(eventType != parser.END_DOCUMENT){
      if(eventType==parser.START_TAG){
         String tagName = parser.getName();
        if(tagName.equls("PDAExchange")){
          result = parser.getAttributeValue("returnMsg");
        }
      }
      eventType = parser.next();
    }
    Log.i("result",result);
      

  4.   

    还是没解析出来 我要疯了!!!
    我应该要改哪里?才能把这一段xml解析出来?
    服务器返回的一段XML:
    <?xml version="1.0" encoding="utf-8"?>
    <string xmlns="http://www.fillaway.com.cn">
    <PDAExchange returnMsg="成功">
    <Supplier>
    </Supplier><Vid>349
    </Vid><ScanState/>
    <Authority>
    <Option>1</Option>
    <Option>2</Option>
    <Option>3</Option>
    <Option>4</Option>
    </Authority>
    </PDAExchange>
    </string> //这个result装的东西就是上面这段XML System.err.println("要解析的XML是:"+result);            InputStream  inStream= new ByteArrayInputStream(result.getBytes());
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                //    得到一个DocumentBuilder解析类
                DocumentBuilder builder = factory.newDocumentBuilder();
                //    接收一个xml的字符串来解析xml,Document代表整个xml文档
                Document document = builder.parse(inStream);
                //    得到xml文档的根元素节点
                Element personsElement = document.getDocumentElement();
                //    得到标签为PDAExchange的Node对象的集合NodeList
                NodeList nodeList = personsElement.getElementsByTagName("string");
                for(int i = 0; i < nodeList.getLength(); i++)
                {
                    //    如果该Node是一个Element
                    if(nodeList.item(i).getNodeType() == Document.ELEMENT_NODE)
                    {
                        Element personElement = (Element)nodeList.item(i);
                        //    得到Node的属性值
                        String Nodname = personElement.getAttribute("returnMsg");
                        System.err.println(Nodname);
                        
                        NodeList childNodesList = personElement.getChildNodes();
                        for(int j = 0; j < childNodesList.getLength(); j++)
                        {
                            if(childNodesList.item(j).getNodeType() == Document.ELEMENT_NODE)
                            {
                                //    解析到了person下面的name标签
                                if("Vid".equals(childNodesList.item(j).getNodeName()))
                                {
                                    //    得到name标签的文本值
                                    String name = childNodesList.item(j).getFirstChild().getNodeValue();
                                    System.out.println(name);
                                }
                                else if("Authority".equals(childNodesList.item(j).getNodeName()))
                                {
                                    String age = childNodesList.item(j).getFirstChild().getNodeValue();
                                    System.out.println(age);
                                    
                                }
                            }
                        }
             }
                    
                }
      

  5.   


    你这个“成功”是属性,因此有两个方法获取属性名和属性值的:
    getAttributeName()
    getAttributeValue()case XmlPullParser.START_TAG:
        
        
        if (xmlParser.getAttributeCount() == 1) {
            String attrValue = xmlParser.getAttributeValue(0);//得到的值就是“成功”
        }帮忙看看应该怎么写问题出在哪里?
    服务器返回的一段XML:
    <?xml version="1.0" encoding="utf-8"?>
    <string xmlns="http://www.fillaway.com.cn">
    <PDAExchange returnMsg="成功">
    <Supplier>
    </Supplier><Vid>349
    </Vid><ScanState/>
    <Authority>
    <Option>1</Option>
    <Option>2</Option>
    <Option>3</Option>
    <Option>4</Option>
    </Authority>
    </PDAExchange>
    </string> //这个result装的东西就是上面这段XML System.err.println("要解析的XML是:"+result);            InputStream  inStream= new ByteArrayInputStream(result.getBytes());
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                //    得到一个DocumentBuilder解析类
                DocumentBuilder builder = factory.newDocumentBuilder();
                //    接收一个xml的字符串来解析xml,Document代表整个xml文档
                Document document = builder.parse(inStream);
                //    得到xml文档的根元素节点
                Element personsElement = document.getDocumentElement();
                //    得到标签为PDAExchange的Node对象的集合NodeList
                NodeList nodeList = personsElement.getElementsByTagName("string");
                for(int i = 0; i < nodeList.getLength(); i++)
                {
                    //    如果该Node是一个Element
                    if(nodeList.item(i).getNodeType() == Document.ELEMENT_NODE)
                    {
                        Element personElement = (Element)nodeList.item(i);
                        //    得到Node的属性值
                        String Nodname = personElement.getAttribute("returnMsg");
                        System.err.println(Nodname);
                        
                        NodeList childNodesList = personElement.getChildNodes();
                        for(int j = 0; j < childNodesList.getLength(); j++)
                        {
                            if(childNodesList.item(j).getNodeType() == Document.ELEMENT_NODE)
                            {
                                //    解析到了person下面的name标签
                                if("Vid".equals(childNodesList.item(j).getNodeName()))
                                {
                                    //    得到name标签的文本值
                                    String name = childNodesList.item(j).getFirstChild().getNodeValue();
                                    System.out.println(name);
                                }
                                else if("Authority".equals(childNodesList.item(j).getNodeName()))
                                {
                                    String age = childNodesList.item(j).getFirstChild().getNodeValue();
                                    System.out.println(age);
                                    
                                }
                            }
                        }
             }
                    
                }
      

  6.   

    大致帮你调试了一下,你的问题主要出在一个地方:personsElement.getElementsByTagName("string");
    这里不应有是"string", 而是"PDAExchange"。DocumentBuilderFactory factory = null;
            DocumentBuilder builder = null;
            Document document = null;
            InputStream inputStream = null;
            factory = DocumentBuilderFactory.newInstance();        try {
                //inputStream = this.getResources().getAssets().open("info.xml");
                inputStream = new ByteArrayInputStream(result.getBytes());            //log("inputStream : " + inputStream);
                factory = DocumentBuilderFactory.newInstance();
                //    得到一个DocumentBuilder解析类
                builder = factory.newDocumentBuilder();            //    接收一个xml的字符串来解析xml,Document代表整个xml文档
                document = builder.parse(inputStream);
                //    得到xml文档的根元素节点
                Element personsElement = document.getDocumentElement();
                //    得到标签为PDAExchange的Node对象的集合NodeList
                NodeList nodeList = personsElement.getElementsByTagName("PDAExchange");
                log("length : " + nodeList.getLength());
                for (int i = 0; i < nodeList.getLength(); i++) {
                    //    如果该Node是一个Element
                    if (nodeList.item(i).getNodeType() == Document.ELEMENT_NODE) {
                        Element personElement = (Element) nodeList.item(i);
                        //    得到Node的属性值
                        String Nodname = personElement.getAttribute("returnMsg");
                        log(Nodname);                    NodeList childNodesList = personElement.getChildNodes();
                        for (int j = 0; j < childNodesList.getLength(); j++) {
                            if (childNodesList.item(j).getNodeType() == Document.ELEMENT_NODE) {
                                //    解析到了person下面的name标签
                                if ("Vid".equals(childNodesList.item(j).getNodeName())) {
                                    //    得到name标签的文本值
                                    String name = childNodesList.item(j).getFirstChild().getNodeValue();
                                    log(name);
                                } else if ("Authority".equals(childNodesList.item(j).getNodeName())) {
                                    String age = childNodesList.item(j).getFirstChild().getNodeValue();
                                    log(age);                            }
                            }
                        }
                    }            }        } catch (IOException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } finally {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }祝你好运!
      

  7.   

    非常感谢你的耐心 直接编好代码给我 表示很感激;如图2 首先我把服务器返回的XML打印出来 System.err.println("要解析的XML是:"+result);
    然后 如果解析成功的话:
     //    得到Node的属性值
                        String Nodname = personElement.getAttribute("returnMsg");
                        System.err.print(Nodname);
    if ("Vid".equals(childNodesList.item(j).getNodeName())) {
                                    //    得到name标签的文本值
                                    String name = childNodesList.item(j).getFirstChild().getNodeValue();
                                    System.err.print(name);
    都没解析到 
      

  8.   


    DocumentBuilderFactory factory = null;
            DocumentBuilder builder = null;
            Document document = null;
            InputStream inputStream = null;
            factory = DocumentBuilderFactory.newInstance();        try {
                //inputStream = this.getResources().getAssets().open("info.xml");
                inputStream = new ByteArrayInputStream(result.getBytes());            //log("inputStream : " + inputStream);
                factory = DocumentBuilderFactory.newInstance();
                //    得到一个DocumentBuilder解析类
                builder = factory.newDocumentBuilder();            //    接收一个xml的字符串来解析xml,Document代表整个xml文档
                document = builder.parse(inputStream);
                //    得到xml文档的根元素节点
                Element personsElement = document.getDocumentElement();
                //    得到标签为PDAExchange的Node对象的集合NodeList
                NodeList nodeList = personsElement.getElementsByTagName("PDAExchange");
                log("length : " + nodeList.getLength());
                for (int i = 0; i < nodeList.getLength(); i++) {
                    //    如果该Node是一个Element
                    if (nodeList.item(i).getNodeType() == Document.ELEMENT_NODE) {
                        Element personElement = (Element) nodeList.item(i);
                        //    得到Node的属性值
                        String Nodname = personElement.getAttribute("returnMsg");
                        log(Nodname);                    NodeList childNodesList = personElement.getChildNodes();
                        for (int j = 0; j < childNodesList.getLength(); j++) {
                            if (childNodesList.item(j).getNodeType() == Document.ELEMENT_NODE) {
                                //    解析到了person下面的name标签
                                if ("Vid".equals(childNodesList.item(j).getNodeName())) {
                                    //    得到name标签的文本值
                                    String name = childNodesList.item(j).getFirstChild().getNodeValue();
                                    log(name);
                                } else if ("Authority".equals(childNodesList.item(j).getNodeName())) {
                                    NodeList subNodesList = childNodesList.item(j).getChildNodes();
                                    for (int k=0; k<subNodesList.getLength(); ++k) {
                                        if ("Option".equals(subNodesList.item(k).getNodeName())) {
                                            String age = subNodesList.item(k).getFirstChild().getNodeValue();
                                            log(age);
                                        }
                                    }                            }
                            }
                        }
                    }            }        } catch (IOException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } finally {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }值应该都得到了
      

  9.   

    非常感谢你的耐心 直接编好代码给我 表示很感激;如图2 首先我把服务器返回的XML打印出来 System.err.println("要解析的XML是:"+result);
    然后 如果解析成功的话:
     //    得到Node的属性值
                        String Nodname = personElement.getAttribute("returnMsg");
                        System.err.print(Nodname);
    if ("Vid".equals(childNodesList.item(j).getNodeName())) {
                                    //    得到name标签的文本值
                                    String name = childNodesList.item(j).getFirstChild().getNodeValue();
                                    System.err.print(name);
    都没解析到 
    一个解析的问题从2013年做到2014年了都 还没解决
      

  10.   


    看你的红圈注释说“红圈里没有东西”,如果getLength()为0的话,难道是你的InputStream有问题?
    因为在我电脑上解析的时候都是有值的,代码跟你的一样,就是InputStream不一样
      

  11.   


    看你的红圈注释说“红圈里没有东西”,如果getLength()为0的话,难道是你的InputStream有问题?
    因为在我电脑上解析的时候都是有值的,代码跟你的一样,就是InputStream不一样
    靠!!!!问题不在我这里(android)接口的问题啊