2017-08-07 55 views
-1

在KML中包含&字符的正确格式是什么?我在名称标签中使用它们。如果我包含常规'&',那么它是无效的。如何在KML中添加&符号?

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

我使用这个格式:

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

我正在寻找一个PHP的解决方案。我正在用PHP创建KML。

回答

3

KML是一个XML文件,所以只要遵循XML规则,特殊字符进行编码。 在XML中,您可以编码“&”和其他带有“predefined entities”的特殊字符,以表示关联的特殊字符或使用CDATA部分。

  1. 预定义实体

XML规范定义了五个“预定义的实体”代表的特殊字符,并要求所有的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部分是元素内容的一部分,标记为解析器仅解释为字符数据,而不是标记。

实施例:

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

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

在你的情况&成为&amp;

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

+0

我用值在PHPヶ辆()和现在我从它创建得到一个错误:' –' –

0

我用PHP功能与ENT_XML1标志:

htmlentities($sString, ENT_XML1)) 
+0

请。如果其中一个答案对你有帮助,请对它投个票:[当有人回答我的问题时我应该怎么做?](https://stackoverflow.com/help/someone-answers) – TwystO