2

我在解析 KML 文件时遇到两个问题。我正在使用 DocumentBuilder 来做到这一点。这是我要解析的示例部分:

<Placemark>
 <description>&lt;div align=center&gt;&lt;img src=some_image.jpg  width=300 height=220/&gt;&lt;br/&gt;SOME IMAGE&lt;/div&gt;</description>
 <styleUrl>#m_ylw-pushpin</styleUrl>
 <ExtendedData>
   <Data name="Numero">
     <Value>00032</Value>
   </Data>
   <Data name="Nombre">
     <Value>GTA ALONSO MARTINEZ</Value>
   </Data>
 </ExtendedData>
 <Point>
   <altitudeMode>relativeToGround</altitudeMode>
   <coordinates>-3.69556116887887,40.4276170711932,10 </coordinates>
 </Point>
</Placemark>

第一件事是,当我想获得“地标”的孩子时,我会在标签之间得到一些返回字符“\n”。例如

NodeList nodeList = doc.getElementsByTagName("Placemark");
String node = nodeList.item(0).getTextContent(); // node = "\n"
String node2 = nodeList.item(1).getTextContent(); // node = [content of <description>]

另一个问题是 DocumentBuilder 是否可以将 html 字符(< 和 >)转换为(< 和 >)以进入此标签并正确解析它。

谢谢

4

2 回答 2

1

您是否尝试过像http://code.google.com/p/javaapiforkml/这样的 KML 库

具体来说,这几乎总是生成或解析 KML 的答案,特别是如果您不熟悉 XML 解析、字符集等。

于 2013-01-24T22:52:52.923 回答
0

中可以配置一些选项DocumentBuilderFactory,例如合并(即将 CDATA 元素扩展为文本节点)、忽略注释等。

在您的情况下,如果您只想在没有那些元素间“\n”的纯文本中转储没有空格内容(制表符、\n、空格等)的 XML 内容,您应该传递truesetIgnoringElementContentWhitespace().DocumentBuilderFactory

于 2013-01-24T12:18:28.337 回答