1

アセット フォルダーから XML ファイルを解析して、データをデータベースにダンプしています。後でこれを取得して、テキスト ビューに表示することができます。しかし、解析中に一部のデータが失われます。つまり、解析前に XML タグ内に 50 語程度含まれていた場合、データベースで解析後にそれらのすべてを見つけることができません。

例:私はこの行を解析しています:

<about>Skandagiri also known as kalavara durga, is an ancient mountain fortess located approximately 70km from Banglore city and 3 km from Chikkaballapur in the Indian State of Karnataka.It is off Bellary road(NH 7, Hyderabad to Bangalore Highway) and overlooks Nandi Hills, Mudddenahalli and Kanive narayanapura.The peak is at an altitude of about 1350 meters</about>

私のデータベースで解析した後:

at an altitude of about 1350 

私は次のように解析された値を保持するために文字列を使用しています:

if (element.equalsIgnoreCase("about")){
  String str=parsedValue;
}   
4

3 に答える 3

2

SAXparser を使用している場合は、データを StringBuffer でラップすることをお勧めします。
公式ドキュメントを見てみましょう: ContentHandler
ここに興味深い部分があります:

パーサーはこのメソッドを呼び出して、文字データの各チャンクを報告します。SAX パーサーは、連続するすべての文字データを 1 つのチャンクで返すか、複数のチャンクに分割します。ただし、ロケータが有用な情報を提供できるように、1 つのイベントのすべての文字は同じ外部エンティティから取得する必要があります。

于 2013-01-12T10:11:19.810 に答える
2

以下のコードを試してみてください。問題は解決したと思います。

  Element element = (Element) node.item(i);

  NodeList id = element.getElementsByTagName("about");
  Element line1 = (Element) id.item(0);
  if (null != line1)

      AdsFound[i] = getCharacterDataFromElement(line1);

  else

      AdsFound[i] = "";
于 2013-01-12T11:02:50.377 に答える
1

テキストはチャンクで読み取ることができ、コードの一部だけを読み取る可能性があるため、StringBufferを使用します。文字列バッファを使用してすべてのチャンクを追加すると、最終的にデータを失うことなく完全なテキストを取得できます。

このような:

StringBuffer strbufr = new StringBuffer();

    if (element.equalsIgnoreCase("about")){
      String str = strbufr.toString().trim();
    }  

    @Override
        public void characters(char[] ac, int i, int j) throws SAXException {
            strbufr.append(ac, i, j);
        }
于 2013-01-26T12:35:17.780 に答える