如何在 KML 中添加符号?

How to add an ampersand in KML?

在 KML 中包含符号的正确格式是什么?我在名称标签中使用它们。如果我包含一个常规的“&”,那么它是无效的。

我还需要正确编码哪些其他字符?

我正在使用这种格式:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">

我正在寻找 PHP 解决方案。我正在 PHP.

中创建 KML

要在 XML、HTML/XHTML 等标记语言或 KML 等派生格式中转义符号等特殊字符,请使用 HTML 个实体。

在你的情况下 & 变为 &amp;

您可以在此页面上找到有关实体的更多信息:Character_references

KML 是一个 XML 文件,因此只需遵循 XML 规则对特殊字符进行编码。 在 XML 中,您可以使用 "predefined entities" that represent the associated special characters or using a CDATA 部分对 "&" 和其他特殊字符进行编码。

1.预定义实体

XML 规范定义了五个 "predefined entities" 代表特殊字符,并要求所有 XML 处理器遵守它们。使用这些特殊的预定义实体名称,在评估元素内容时,这些名称将替换为它代表的实际字符。

name  | characters
----- | ------
<     | &lt;
>     | &gt;
&     | &amp;
"     | &quot;
'     | &apos;

示例:

<description>
  &lt;a href="http://server.com/link"&gt;A &amp; B&lt;/a&gt;
</description>

2。 CDATA

另一种在 XML 元素内转义标记的机制是 CDATA。 CDATA 部分是元素内容的一部分,它被标记为供解析器解释为仅 character 数据,而不是标记。

示例:

<description>
  <![CDATA[
    <a href="http://server.com/link">A & B</a>
  ]]>
</description>

我使用了带有 ENT_XML1 标志的 PHP 函数:

htmlentities($sString, ENT_XML1))