2012-04-30 11 views
0

私はAndroidアプリケーションをやっています。私のアプリでは、XMLページを解析する必要があります.xmlページのデータは次の形式です。saxの解析: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

関連する問題