根元素名称不匹配。预期的

Root element name does not match. Expected

我正在使用 Android 简化版本的 SAX API 解析 KML 文件,其中没有处理程序。问题是我打电话给

RootElement root = new RootElement("kml");

正在崩溃,给我这样的错误:

java.lang.RuntimeException: android.sax.BadXmlException: Line 2: Root element name does not match. Expected: 'kml', Got: 'http://www.opengis.net/kml/2.2:kml'

这是正在分析的文件的开头:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">  etc...

我照章办事了,但它仍然是导致错误的原因。我在堆栈溢出时看到其他 post,但它们与 SAXParserFactory 相关,您可以在其中禁用 XML 模式验证。不幸的是,在这里我不能。

谢谢!

需要在 RootElement 中指定 KML 命名空间以匹配 KML 文件中的内容,否则会出现解析异常。不指定命名空间在技术上是一个具有空 URI 的特殊命名空间。

final String KML_NAMESPACE = "http://opengis.net/kml/2.2";
RootElement root = new RootElement(KML_NAMESPACE, "kml");
// ...
XMLReader reader = ...;
reader.setContentHandler(root.getContentHandler());
reader.parse(...);