2012-08-15 15 views
6

http POST के निष्पादन के दौरान मैं प्रतिक्रिया को स्ट्रिंग प्रतिक्रिया के रूप में संग्रहीत करता हूं।httppost प्रतिक्रिया से पार्स xml

<?xml version="1.0" encoding="UTF-8"?> 
<response status="ok"> 
<sessionID>lo8mdn7bientr71b5kn1kote90</sessionID> 
</response> 

मैं सिर्फ sessionID स्ट्रिंग के रूप स्टोर करने के लिए करना चाहते हैं:

HttpResponse httpresponse = httpclient.execute(httppost); 
HttpEntity resEntity = httpresponse.getEntity(); 
response = EntityUtils.toString(resEntity); 

अगर मैं प्रतिक्रिया प्रिंट यह तरह दिखता है। मैं

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
InputSource is = new InputSource(new StringReader(xml)); 

और इस तरह विभिन्न तरीकों की कोशिश की है, लेकिन यह नहीं दूँगी क्योंकि DocumentBuildFactory और InputSource अमान्य हैं मुझे कोड चलाते हैं।

इस XML से विशिष्ट स्ट्रिंग निकालने के लिए मुझे क्या करना चाहिए?

+0

मेरे लिए [KSOAP2] (http://ksoap2.sourceforge.net/) प्रतिक्रियाओं के इस प्रकार संभाल करने – mihail

उत्तर

8

यह सिर्फ त्वरित और गंदी परीक्षण है। यह मेरे लिए काम किया।

import java.io.IOException; 
import java.io.StringReader; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 

import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 
import org.xml.sax.InputSource; 
import org.xml.sax.SAXException; 

public class Test { 
    public static void main(String[] args) { 
     String xml= "<?xml version=\"1.0\" encoding=\"UTF-8\"?><response status=\"ok\"><sessionID>lo8mdn7bientr71b5kn1kote90</sessionID></response>"; 
     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder; 
     InputSource is; 
     try { 
      builder = factory.newDocumentBuilder(); 
      is = new InputSource(new StringReader(xml)); 
      Document doc = builder.parse(is); 
      NodeList list = doc.getElementsByTagName("sessionID"); 
      System.out.println(list.item(0).getTextContent()); 
     } catch (ParserConfigurationException e) { 
     } catch (SAXException e) { 
     } catch (IOException e) { 
     } 
    } 
} 

उत्पादन: lo8mdn7bientr71b5kn1kote90

+0

के लिए धन्यवाद सबसे अच्छा उपाय है प्रतिक्रिया, यह काम करता है केवल एक समस्या यह है कि जब मैं अपनी वास्तविक प्रतिक्रिया का उपयोग करता हूं तो यह नहीं करता है। मुझे लगता है कि ऐसा इसलिए होता है क्योंकि स्ट्रिंग में उद्धरण होते हैं जो ठीक से बच नहीं जाते हैं। – Ted

+0

मुझे यकीन नहीं है कि आपको वास्तव में प्रतिक्रिया में क्या मिलता है, एक अनुमान यह है कि इसमें यूटीएफ स्ट्रिंग की शुरुआत में बीओएम (अधिक जानकारी के लिए Google एक्सएमएल बीओएम) शामिल हो सकता है। यदि आपके पास डीबगर (जैसे ग्रहण में से एक है) है, तो यह समझने के लिए यह बहुत सीधे होना चाहिए कि इसमें और हार्डकोडेड वर्किंग स्ट्रिंग के बीच क्या अंतर है। –

+0

यदि प्रतिक्रिया का टेक्स्ट एन्कोडिंग यूटीएफ -8 है, तो शायद यह प्रतिक्रिया = EntityUtils.toString (resEntity) को बदलने की कोशिश के लायक भी है; प्रतिक्रिया = EntityUtils.toString (resEntity, "UTF-8"); –

1

1.DOM Parser का उपयोग करें।

उदाहरण के लिए:

DocumentBuilderFactory odbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder odb = odbf.newDocumentBuilder(); 
      InputSource is = new InputSource(new StringReader(xml)); 
      Document odoc = odb.parse(is); 
      odoc.getDocumentElement().normalize(); // normalize text representation 
      System.out.println ("Root element of the doc is " + odoc.getDocumentElement().getNodeName()); 
      NodeList LOP = odoc.getElementsByTagName("locations"); 
      int totalPersons =LOP.getLength(); 
      System.out.println("Total nos of locations:"+totalPersons); 

      for(int s=0; s<LOP.getLength() ; s++) 
      { 
       Node FPN =LOP.item(s); 
       if(FPN.getNodeType() == Node.ELEMENT_NODE) 
        { 

        Element latlon = (Element)FPN;                 

        NodeList oNameList1 = latlon.getElementsByTagName("featured");          
        Element firstNameElement = (Element)oNameList1.item(0); 
        NodeList textNList1 = firstNameElement.getChildNodes(); 
        //this.setLocationId(((Node)textNList1.item(0)).getNodeValue().trim());  
        featuredArr = changeToBoolean(((Node)textNList1.item(0)).getNodeValue().trim());         // value taken 
        System.out.println("#####The Parsed data#####"); 
        System.out.println("featured : " + ((Node)textNList1.item(0)).getNodeValue().trim());   
        System.out.println("#####The Parsed data#####"); 
    } 

अधिक जानकारी के लिए इस लिंक देखें:

http://tutorials.jenkov.com/java-xml/dom.html

संबंधित मुद्दे