我正在查看芝加哥开放数据门户网站list of bus stops,我发现他们已经双倍地逃过了他们的&符号,但并非全部。换句话说,他们有时会将他们的&号编码为& amp,有时只是&
我注意到的模式是它们在描述字段内双重转义&符号,这些字符是KML文档本身中的完全成熟的HTML文档。
有没有人对此有任何见解?这是城市数据中的错误吗?它也无法在Google地球中正确呈现。
答案 0 :(得分:2)
芝加哥开放数据门户网站KML中的公交车站列表中的XML实体编码不正确。
以下KML代码段在Google地球的说明气球中显示为Indiana & 14th Street
,而不是“Indiana& 14th Street”。
示例:
<Placemark>
<name>Indiana & 14th Street</name>
<description>
<![CDATA[<html xmlns:fo="http://www.w3.org/1999/XSL/Format">
...
<td>PUBLIC_NAME</td>
<td>Indiana &amp; 14th Street</td>
....
</html>
]]>
</description>
文本&amp;
被解码为&
,使用CDATA块按原样显示。显示“&amp;”在描述中,然后在CDATA块内容中需要&
或&
(不是两者)。名称字段中的编码是正确的,因为它没有CDATA标记。</ p>
事实上,KML应该使用单个BalloonStyle来捕获每个地标中带有ExtendedData的冗长HTML文本,以获取地标中的特定值(例如城市,状态,公共名称等)除了将文件压缩为KMZ之外 - 这将大大减少15MB文件的大小。
这是一个使用BalloonStyles和ExtendedData的教程 https://developers.google.com/kml/documentation/extendeddata
以下是KML中特殊实体编码的说明 http://kml4earth.appspot.com/kmlErrata.html#encoding