2017-08-15 4 views
0

質問があります[this one here][1] XMLPullParserに関するチュートリアルを読んでいますが、これを取得していないようです。XMLPullParserを使用してすべてのXMLテキストを解析します

私は結果を取得したいXMLPullParser

<dt> 
: <sx>outcome</sx> 
<sx>result</sx> 
</dt> 

を使用して解析するXMLタグ持っている「:結果結果を」 私はこのXMLをオンラインベースから読んでいます。それは変わるかもしれません。例えば:

<dt> 
:degree or measure of 
<d_link>succeeding</d_link> 
</dt> 

質問は、私は「DT」にかかわらず、その中にタグの名前を解析し、タグ内のすべてのテキストを得るのですかですか?

これは私が試したものですが、動作しません。

while (parser.next() != END_TAG){ 
      if (parser.getEventType() != TEXT) 
      { 
       continue; 
      } 
      else if (parser.getEventType() == TEXT) 
      { 
       Log.d("Text", parser.getText()+" in the likelihood"); 
       stringBuilder.append(parser.getText()); 
       parser.next(); 
      } 

      } 

答えて

1

あなたは次のように何かを行う必要があります。私たちは、XMLが適切に開いたタグを覚えて、コード、値とタグが終了したときに値を追加するを変更することができますフォーマットされていることを前提とした場合

while (eventType != XmlPullParser.END_DOCUMENT) 
{ 
    String tagname = parser.getName(); 
    switch (eventType) 
    { 
     case XmlPullParser.START_TAG: 
      if (tagname.equalsIgnoreCase("dt")) 
      { 
       // create a new instance of DTClass 
       dt= new DTClass(); 
      } 
      break; 

     case XmlPullParser.TEXT: 
      text = parser.getText(); 
      break; 

     case XmlPullParser.END_TAG: 
      if (tagname.equalsIgnoreCase("dt")) { 
        // add DTClass object to list 
        dts.add(dt); 
      } 
      else if (tagname.equalsIgnoreCase("sx")) 
      { 
        dt.setSX(text); 
      } 

      break; 

     default: 
      break; 
    } 
    eventType = parser.next(); 
} 
+0

非常にありがとうございました。問題は、サブタグの内容を制御できないことです。特定のクエリの場合、この時点では「sx」になる可能性があります。このケースをどうやって処理するのですか? –

+0

これで動作します。どうもありがとう! –

+0

Thanks Artur。上記と同様の質問があります。どのように私はあなたに連絡しますか? –

0

を辞書/以下のようなリスト:

while (eventType != XmlPullParser.END_DOCUMENT) 
{ 
    String tagname = parser.getName(); 
    String detectedTag = "" ; 
    String valueTag = "" ; 
    switch (eventType) 
    { 
     case XmlPullParser.START_TAG: 
      if (tagname.equalsIgnoreCase("dt")) 
      { 
       // create a new instance of DTClass 
       // move this line to the end tag 
       //dt= new DTClass(); 
      } 
      detectedTag = tagname ; 
      break; 

     case XmlPullParser.TEXT: 
      valueTag = parser.getText();     
      break; 

     case XmlPullParser.END_TAG: 
      if (tagname.equalsIgnoreCase(detectedTag)) {      
        // create a new instance of DTClass      
        dt= new DTClass(); 

        // set value 
        dt.setValue(valueTag); 

        // add DTClass object to list od dictionary 
        dts.add(dt); 
      } 
      else 
      { 
        // clear tag and value tag 
        detectedTag = "" ; 
        valueTag = ""; 
      } 

      break; 

     default: 
      break; 
    } 
    eventType = parser.next(); 
} 
+0

ありがとう!それは今働く。あなたが最初に答えても、完璧に働きました。ありがとう。 –

+0

ここにいる –

関連する問題