我在我的XML文件中使用CDATA,如下所示:
<markerHTML1><![CDATA[<center><u>Header Goes Here</u></center><br /><li>Example text goes here.</li><br /><li>You can even use <a href="http://www.weather.gov" target="_blank">links</a>.</li>]]></markerHTML1>
当一切都在上面的一行上时,它完美地运作。但是,我想使用多行,因此更容易编辑(而不是一直滚动一条长行),如下所示:
<markerHTML1>
<![CDATA[<center><u>Header Goes Here</u></center><br />
<li>Example text goes here.</li><br />
<li>You can even use <a href="http://www.weather.gov"target="_blank">links</a>.</li>]]>
</markerHTML1>
问题是,当它在第二个例子中被格式化时,它不再有效。知道为什么会这样吗?
谢谢!
--- --- EDIT
这是引用标记markerHTML1,markerHTML2等
的PHP代码for ($i=1;$i<=100;$i++){
$lat = $xml->{'markerLat'.$i};
$lon = $xml->{'markerLon'.$i};
$html = $xml->{'markerHTML'.$i};
if(strlen($lat)>0){
echo "L.marker(['$lat','$lon']).addTo(map).bindPopup('$html');\n";
}
else{
#Break out of the loop since there are no more markers defined
$i=100;
}
}
答案 0 :(得分:0)
看来这是:
L.marker(['$lat','$lon']).addTo(map).bindPopup('$html');
是JavaScript代码,是吗?如果您将$html
值直接连接到该值,它将等同于:
L.marker(['33', '44']).addTo(map).bindPopup('<center><u>Header Goes Here</u></center><br />
<li>Example text goes here.</li><br />
<li>You can even use <a href="http://www.weather.gov"target="_blank">links</a>.</li>');
在字符串文字中间使用内联是无效的JavaScript(除非你在它们之前加上反斜杠),所以很可能你的JavaScript失败了。
即使您没有换行符,也可能由于各种原因而失败(例如,如果您的HTML包含单引号'
。
可能最简单的方法是将HTML编码为JSON:
$htmlJson = json_encode($html);
echo "L.marker(['$lat','$lon']).addTo(map).bindPopup($htmlJson);\n";
请注意,我已移除了$htmlJson
周围的引号,因为它现在应该包含自己的引号。