1

我从学校的班车跟踪服务器获取了一个包含班车路线和位置的 KML 文件。我想在我的 Android 应用程序中解析这个 KML,但是当我将文件传递到 VTD-XML 2.9 解析器时,它失败了,告诉我 XML 没有正确终止。我通过模式验证器运行文件,虽然它不符合KML 2.1 模式(不喜欢文件夹元素),但它的格式正确。

我认为该文档没有任何其他问题,但我也看不出我的代码可能存在问题:

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);
4

1 回答 1

0

情况可能是这样

is.read(doc); 

只能得到任意数量的字节,但绝对不是整个文档......您可以通过打印返回值来验证

int k = is.read(doc)

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

于 2011-01-31T20:13:14.203 回答