2012-04-30 13 views
0

나는 안드로이드 애플리케이션을하고있다. 내 애플 리케이션에서 xml 페이지를 구문 분석해야합니다. xml 페이지의 데이터 형식은 다음과 같습니다.색소폰 파싱 : div 태그에서 값 가져 오기

<root> 
<tag1>data</tag1> 

<tag2> 
<div>data1</div><div>data2</div> 
</tag2> 
</root> 

색소폰 파싱을 통해 데이터를 가져 오려고했습니다.

if (localName.equalsIgnoreCase("tag1")) 
if (localName.equalsIgnoreCase("tag2")) 

하지만 tag1.I에서 tag2로하지만 점점 값에서 데이터를 받고 있지 않다 모든 데이터는 만 내가 좋아하는 HTML 페이지에서 데이터를 표시 할 수 있습니다 DIV 태그를 포함 싶어.

+0

당신은 또한 사용할 수있는 경우 (localName.equalsIgnoreCase는 ("DIV")) 내가 원하는 – Jitendra

+0

DIV 태그가 너무 .... 만 나는 내용을 표시 할 수 있음 html 형식 – sarath

답변

2

사용이 샘플 코드

public class SAXParserDemo extends DefaultHandler { 

    private String currentTag = ""; 
    private StringBuffer responseTag; 
    private String str; 

    @Override 
    public void startDocument() throws SAXException { 
     super.startDocument(); 

    } 

    @Override 
    public void endDocument() throws SAXException { 
     super.endDocument(); 
    } 

    @Override 
    public void startElement(String uri, String localName, String name, 
      Attributes attributes) throws SAXException { 
     super.startElement(uri, localName, name, attributes); 

     currentTag = localName; 
     if ("tag1".equalsIgnoreCase(localName)) { 
      responseTag = new StringBuffer(); 
     }else if ("tag2".equalsIgnoreCase(localName)) { 
      responseTag = new StringBuffer(); 
     }else if ("div".equalsIgnoreCase(localName)) { 
      responseTag = new StringBuffer(); 
     } 
    } 

    @Override 
    public void endElement(String uri, String localName, String name) 
      throws SAXException { 
     super.endElement(uri, localName, name); 
     String responseValue = responseTag.toString().trim(); 

     if ("tag1".equalsIgnoreCase(localName)) { 
      Log.v("TAG", "Tag 1 value "+responseValue); 
     }else if ("tag2".equalsIgnoreCase(localName)) { 
      Log.v("TAG", "Tag 2 value "+responseValue); 
     }else if ("div".equalsIgnoreCase(localName)) { 
      Log.v("TAG", "div value "+responseValue); 
     } 
    } 

    @Override 
    public void characters(char[] ch, int start, int length) 
      throws SAXException { 
     super.characters(ch, start, length); 
     str = new String(ch, start, length); 

     if ("tag1".equalsIgnoreCase(currentTag)) { 
      responseTag.append(str); 
     }else if ("tag2".equalsIgnoreCase(currentTag)) { 
      responseTag.append(str); 
     }else if ("div".equalsIgnoreCase(currentTag)) { 
      responseTag.append(str); 
     } 
    } 
} 
+0

값이 없습니다. – sarath

+0

logcat에서 div 값을 볼 수 있습니다. 그래도 문제가 계속되면 코드를 공유하십시오. – Jitendra

0

SAX 구문 분석을 사용하는 경우 div 요소를 찾고 부모 요소 (사용자 자신)를 추적하고 tag2인지 확인해야합니다. tag1 요소에 해당 문자가 직접 포함되어 있기 때문에 데이터 (문자)가 나타납니다. tag2 요소는 (공백 문자가 아닌) 문자를 포함하지 않으며 다른 요소 만 포함합니다.

+0

에서 샘플 코드를 제공 할 수 있습니까? – sarath