Анализ XML-файла из ответа httppost

Во время выполнения http POST я сохраняю ответ как ответ строки.

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

Если я печатаю ответ, он выглядит так:

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

Я хотел бы сохранить только sessionID как строку. я пробовал

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

И различные методы, подобные этому, но он не позволит мне запустить код, поскольку DocumentBuildFactory и InputSource недействительны.

Что я должен делать, чтобы извлечь определенные строки из этого XML?

Это просто быстрый и грязный тест. Это сработало для меня.

 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

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