2013-02-18 2 views
0

나는 JSONXML URL을 통해 구문 분석을하고 있습니다. 내가 사용하고있는 URL은 JSONObject이고 그 안에는 XML이 있습니다. 내가 XML을 분석해야하고, 지금Android : XML을 통한 XML 구문 분석

{ 
"output": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Results>\n <Feed prov=\"dmoz\">\n  <ResultSet id=\"webListings\" source=\"DMOZ\">\n   <Listing description=\" - A bike shop in Brisbane. Stocks mountain bikes, road bikes, and BMX bikes.\n     \" rank=\"1\" siteHost=\"http://www.lifecycle.net.au/\" title=\"Lifecycle Bike Shop\">\n    <ClickUrl type=\"body\">http://www.lifecycle.net.au/</ClickUrl>\n   </Listing>\n   <Listing description=\" - Videos and pictures taken of both sport bikes and dirt bikes.\n     \" rank=\"2\" siteHost=\"http://roadanddirt.com/\" title=\"Road and Dirt\">\n    <ClickUrl type=\"body\">http://roadanddirt.com/</ClickUrl>\n   </Listing>\n</Results>" 
} 

:

여기
HttpClient hClient = new DefaultHttpClient(); 
     HttpGet hGet = new HttpGet(
       "URL for getting results"); 
     ResponseHandler<String> rHandler = new BasicResponseHandler(); 
     data = hClient.execute(hGet, rHandler); 

     JSONObject json = new JSONObject(data); 
     // get xml string form jsonObject 
     String str_xml = json.getString("output"); 

     // now convert str_xml to xml document for xml parsing 
     DocumentBuilderFactory factory = DocumentBuilderFactory 
       .newInstance(); 
     DocumentBuilder db = factory.newDocumentBuilder(); 
     InputSource inStream = new InputSource(); 
     inStream.setCharacterStream(new StringReader(str_xml)); 
     Document doc = db.parse(inStream); // <<< getting xml Document here 

이있는 내가 XML지고있어 JSONObject입니다 : 여기

내가 이것을하고있다 무엇을 내 코드입니다 listview에서 수정하십시오.

<Results> 
<Feed prov="dmoz" > 
    <ResultSet id="webListings" source="DMOZ" > 
     <Listing description=" - A bike shop in Brisbane. Stocks mountain bikes, road bikes, and BMX bikes. " rank="1" siteHost="http://www.lifecycle.net.au/" title="Lifecycle Bike Shop" > 
      <ClickUrl type="body" >http://www.lifecycle.net.au/</ClickUrl> 
     </Listing> 
     <Listing description=" - Videos and pictures taken of both sport bikes and dirt bikes. " rank="2" siteHost="http://roadanddirt.com/" title="Road and Dirt" > 
      <ClickUrl type="body" >http://roadanddirt.com/</ClickUrl> 
     </Listing> 
     <Listing description=" - Resource dedicated to pocket bike enthusiasts both in Australia and overseas. " rank="4" siteHost="http://www.pocket-bike-racing.com.au/" title="Pocket Bike Racing" > 
      <ClickUrl type="body" >http://www.pocket-bike-racing.com.au/</ClickUrl> 
     </Listing> 
    </ResultSet> 
</Feed> 
</Results> 

어떤 하나가 목록보기에 이러한 것들을 해결에 좀 도와 줄래 : 여기에 내가 갖는 샘플 XML입니다. 도움을 받으실 수 있습니다.

+0

목록보기를 만들고 목록보기 어댑터를 사용하여 구문 분석 된 XML 콘텐츠를 ListView에 삽입합니다. –

+0

내 쿼리는 어떻게 XML을 파싱 할 것인가? 왜냐하면 코드에 표시된 것처럼 전체 XML이'doc' varibale에 들어 있기 때문입니다. 그것에 대해 조금 생각해 보시겠습니까? – Anupam

+0

이 XML을 JSON 객체에서 가져 오는 데 도움이 필요합니까? –

답변

0

이 새 XML 파일을 만듭니다. XML 콘텐츠를 작성하십시오. 그리고 SAXParser를 사용하여 XML 파일을 파싱하기 시작하십시오. 이 당신을 도울 수

InputSource is = new InputSource(new InputStream(xml_file)); 

SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 
XMLReader xr = sp.getXMLReader(); 

dataHandler = new UIXMLHandler(); 
xr.setContentHandler(dataHandler); 
xr.parse(is); 

UIXMLHandler.java

public class UIXMLHandler extends DefaultHandler { 

    @Override 
    public void startElement(String uri, String localName, String qName,Attributes atts){ 
     //here find the appropriate element, get it's attribute value if exist. 
    } 

    @Override 
    public void endElement(String uri, String localName, String qName){ 
     //element ends 
    } 

    @Override 
    public void characters(char[] ch, int start, int length){ 
     String data = new String(ch, start, length); 
     data = data.trim(); 
     //data is the value you are going to use. 
    } 
} 

희망.