调试KML文件

4
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document> <Placemark> <Name>Test Name</Name> <Description><b>Project Information</b><br><ul><li>Project Name: Test Name</li><li>Project Number: Test Number</li><li>Project Location:  Test Location</li><li>System: Test System</li></ul><br><b>Project Team</b><br><br><ul><li>Regional Manager: Mem 1</li><li>Project Manager: Mem 2</li></ul><br>YouTube Video URL: <a href="http://youtu.be/U9EYP9GIe2k"><br>Picassa Album URL: <a href="www.picassa.com"><br></Description> <Point> <Coordinates>30,-125</Coordinates>,0 </Point> </Placemark> </Document> </kml>

这就是我的自定义Excel宏生成的内容(我刚开始学习编程,所以请谅解如果您发现了什么大问题)。当我试图用Google Earth打开KML文件时,会弹出以下消息:无法打开文件“文件路径”:第2行,第454列解析错误:标签不匹配。这个问题与/Description标签有关...这个标签出了什么问题?它和对应的Description标签是匹配的。

为了严格遵守XML规范,第一行<?xml...>必须在文档其余部分之前加上一个新行。 - CodeMonkey
1个回答

11

有几种技术可用于调试和修复损坏的KML文件。

基本上,验证KML文件的最快方法是先使用您的Web浏览器。 KML是一个XML文件,因此首先可以测试它是否为格式良好的XML文件,这是成为有效KML文件的先决条件。只需将KML文件重命名并添加.xml文件扩展名,然后将文件拖到Web浏览器(Firefox,Chrome等)上进行验证。在此处查看详细示例

一旦找到并修复了这些错误,那么您就可以尝试使用KML验证器来检查该文件是否符合OGC KML规范和相关的XML模式,例如独立命令行XmlValidator工具。

在您的示例中,如果通过简单的XML SAX解析器运行它,则会显示:元素类型“br”必须在列455处由匹配的结束标记“</br>”终止

错误在于<description>元素具有HTML标记,但没有用 CDATA 块转义(CDATA是XML标准的一部分)。 要解决此问题,您需要像这样重新格式化KML:
  <description>
      <![CDATA[
          <b>Project Information</b>
          ...
          <br>
      ]]>
  </description>

此外,该元素名称错误(Description与description不符)。KML区分大小写。
可以在此处找到更多调试KML文件的提示。

感谢提醒,Jason。我的问题是我卡在了你的验证过程的初始部分——测试它是否为格式良好的XML文件。当我在Chrome中打开文件时,错误与GE给我的相同:在</Description>标记处。当我将代码复制/粘贴到Notepad++中时,它说我的标记匹配,但与Chrome / GE告诉我的相反。 - user1863848
谢谢,Jason。我不知道CDATA,所以感谢你的帮助和指导。现在一切都运行良好! - user1863848

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接