Java VTD-XML产生“文件”;“XML未正确终止”;分析KML文件时出错

Java VTD-XML产生“文件”;“XML未正确终止”;分析KML文件时出错,java,android,xml,vtd-xml,Java,Android,Xml,Vtd Xml,我从学校的航天飞机跟踪服务器上得到了一个包含航天飞机路线和位置的KML文件。我想在Android应用程序中解析这个KML,但是当我将文件传递到VTD-XML2.9解析器时,它失败了,告诉我XML没有正确终止。我通过模式验证器运行了该文件,尽管它不符合(不喜欢folder元素),但格式良好 我不认为该文档还有其他问题,但我也不认为我的代码有什么问题: byte[] doc = new byte[32000]; URL url = new URL("http://shuttles.rpi.edu/d

我从学校的航天飞机跟踪服务器上得到了一个包含航天飞机路线和位置的KML文件。我想在Android应用程序中解析这个KML,但是当我将文件传递到VTD-XML2.9解析器时,它失败了,告诉我XML没有正确终止。我通过模式验证器运行了该文件,尽管它不符合(不喜欢folder元素),但格式良好

我不认为该文档还有其他问题,但我也不认为我的代码有什么问题:

byte[] doc = new byte[32000];
URL url = new URL("http://shuttles.rpi.edu/displays/netlink.kml");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
is.read(doc);

VTDGen vg = new VTDGen();
vg.setDoc(doc);
vg.parse(true);

可能是这样的

is.read(doc); 
只能获取任意数量的字节,但绝对不能获取整个文档。。。 您可以通过打印返回值来验证这一点

int k = is.read(doc)

读取整个文档后,应使用setDoc(doc,0,length),0是文档的起始偏移量wrt,length是xml文档的长度。

文件似乎包含无效字符…它正在读取整个文档。错误发生在换行符之后,读取函数返回正确的长度。我在将文件下载到硬盘驱动器后处理该文件没有问题。。。is.read(doc)使用您提供的代码返回大约20个字节…这可能是一个与HttP相关的问题,您能否将读取的内容包装在一个while循环中以保证整个文档都被读取?只需使用while循环将数据读取到字节数组中,然后使用FileOutputStream将其发送到一个文件。对我从服务器下载的KML和输出进行了区分。两者之间没有区别,但我仍然得到了错误。我应该注意到,我是在Android上运行代码的。我可以下载eclipse的droit SDK吗?假设您使用while循环读取所有内容,那么您将获得XML的总长度,您应该调用
setDoc(doc,0,length)