0
//filename 1.xml

<category 
hello world
</category>
//when iam trying to parse this file using the following code it throws String index out of range: -1
 output: startPos: -1
         endPosi: -1

 String dataLine = nextLine.trim();
 int startPos = dataLine.indexOf(startToken);
 logger.debug("startPos: " + startPos);
 int endPosi = dataLine.lastIndexOf(endToken);
 logger.debug("endPosi: " + endPosi);

// 2.xml it parses this file which contains the following line

<category hello world </category>

//これら2つのファイルの唯一の違いは、最初のファイルの内容が3行にあり、2番目のファイルの内容が1行にあることです。

4

3 に答える 3

1

入力ファイルを次のように変更します。

<category>
    hello world
</category>

次に、開始トークンを次のように送信します。

String startToken = "<category>";

あなたが抱えている問題の1つは、<category無効なXMLです。は.trim()、最初のファイルの最初の行の末尾のスペースを削除しています。簡単な答え:XMLを修正してください。

于 2013-03-25T12:03:41.990 に答える
0

このメソッドtrim()は、末尾の空白を削除します。「 」(末尾にスペースがある)がindexOf()見つからず、。を返します。<category-1

于 2013-03-25T12:02:12.030 に答える
0
int startPos = dataLine.indexOf(startToken);

dataLine文字列にstartTokenがないので、-1を返します。

String#indexOf( "str")

文字列引数がこのオブジェクト内の部分文字列として発生する場合、最初のそのような部分文字列の最初の文字のインデックスが返されます。サブストリングとして発生しない場合は、-1が返されます。

于 2013-03-25T12:03:02.797 に答える