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>

// 这两个文件的唯一区别是第一个文件的内容是三行,第二个文件的内容是单行。

4

3 回答 3

1

将输入文件更改为:

<category>
    hello world
</category>

然后你的开始令牌:

String startToken = "<category>";

您遇到的一个问题<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;

字符串#indexOf("str")

如果字符串参数作为该对象中的子字符串出现,则返回第一个此类子字符串的第一个字符的索引;如果它不作为子字符串出现,则返回 -1。

于 2013-03-25T12:03:02.797 回答