2013-03-25 170 views
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> 

//这两个文件之间的唯一差别是第一个文件的内容是在三行和第二文件的内容是在一个单一的线路。字符串索引超出范围:-1

+3

什么是''startToken''?另外,你的XML无效。它应该是“'''(注意'>') – 2013-03-25 11:58:03

+0

String startToken =”<“+”category“+”“; – srp 2013-03-25 11:58:57

+0

我敢打赌,第一行是' raina77ow 2013-03-25 12:01:11

回答

1

输入文件更改为:

<category> 
    hello world 
</category> 

,然后你开始令牌:

String startToken = "<category>"; 

一个问题,你必须是<category是无效的XML。 .trim()正在剥离第一个文件第一行的尾部空格。简短的回答:修复你的XML。

+0

该文件看起来像这样,所以我需要从类别热门下载上衣 srp 2013-03-25 12:07:43

+0

你真的不想写自己的XML解析器。这是一项非常复杂的业务。看看[这个例子](http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/)了解如何使用现有的XML解析器来读取你的XML。 – 2013-03-25 12:19:15

0

方法trim()删除尾随空白。现在indexOf()找不到“<category”(带有空格)并返回-1

0
int startPos = dataLine.indexOf(startToken); 

我认为你的dataLine字符串中没有startToken,所以它返回-1;

String#indexOf("str")

如果字符串参数发生是由于一个子串这个对象内

,然后 是 返回的第一个这样的字符串的第一个字符的索引;如果它不作为子字符串出现,则返回-1。

相关问题