Java生成KMZ时Description含HTML表格无法正常显示求助
解决KMZ中Description字段HTML表格无法正常显示的问题
问题根源
你手动给description字段拼接了包含CDATA的字符串,但序列化框架(如XStream/JAXB)会将整个字符串视为普通文本,对其中的<、>等特殊字符进行转义,导致最终KML中的CDATA块被破坏,变成类似<![CDATA[<div>...</div>]]>的内容,Google Earth无法识别内部的HTML结构。
解决方案
根据你使用的序列化工具,选择对应的处理方式:
1. 若使用XStream
利用XStream的@CDATA注解,让框架自动为字段内容包裹CDATA块,且不转义内部HTML:
// 修改实体类的description字段注解 @Element(name = "Description") @CDATA private String description; // 设置内容时,直接传入纯HTML,无需手动添加CDATA标签 String htmlTable = "<table border='1' width='300'><tr><td>" + contenidoProcesado[1] + "</td></tr></table>"; String description = "<div>" + htmlTable + "</div>"; placemark.setDescription(description);
如果不想用注解,也可以通过代码注册CDATA转换器:
XStream xstream = new XStream(); xstream.registerConverter(new CDATAConverter()); xstream.alias("Placemark", Placemark.class); // 其他序列化配置...
2. 若使用JAXB
使用@XmlCDATA注解标记字段,避免HTML转义:
import javax.xml.bind.annotation.XmlCDATA; import javax.xml.bind.annotation.XmlElement; // 实体类字段注解 @XmlElement(name = "Description") @XmlCDATA private String description; // 设置内容时直接传入HTML即可 String htmlTable = "<table border='1' width='300'><tr><td>" + contenidoProcesado[1] + "</td></tr></table>"; String description = "<div>" + htmlTable + "</div>"; placemark.setDescription(description);
3. 手动生成XML(适配所有序列化场景)
如果上述注解方式不生效,可以直接用DOM/SAX手动构建XML节点,创建CDATA块并嵌入HTML:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); // 创建Placemark节点 Element placemarkElem = doc.createElement("Placemark"); // 创建Description节点并添加CDATA内容 Element descElem = doc.createElement("Description"); CDATASection cdataContent = doc.createCDATASection("<div><table border='1' width='300'><tr><td>" + contenidoProcesado[1] + "</td></tr></table></div>"); descElem.appendChild(cdataContent); placemarkElem.appendChild(descElem); // 后续将Document写入KML文件,再打包为KMZ
验证结果
修改后生成的KML中,Description标签内容会是:
<Description><![CDATA[<div><table border='1' width='300'><tr><td>xxx</td></tr></table></div>]]></Description>
Google Earth会正确解析CDATA内的HTML表格,正常显示描述内容。
内容的提问来源于stack exchange,提问作者adrian
相关产品推荐
相关产品推荐

