在Java中使用XQuery从xml文件提取CData

在Java中使用XQuery从xml文件提取CData,java,xml,xquery,kml,Java,Xml,Xquery,Kml,我有一个kml文件(本质上是xml),它有一组节点;名称、描述、坐标等。到目前为止,我只得到了两个值;名称和坐标。现在我也想获取描述数据,唯一的问题是它是CData,解析时会被忽略 到目前为止,我一直在使用XQuery获取数据 XPathExpression expr = xpath.compile("//name/text()"); Object result = expr.evaluate(doc, XPathConstants.NODESET); NodeList nodes = (Nod

我有一个kml文件(本质上是xml),它有一组节点;名称、描述、坐标等。到目前为止,我只得到了两个值;名称和坐标。现在我也想获取描述数据,唯一的问题是它是CData,解析时会被忽略

到目前为止,我一直在使用XQuery获取数据

XPathExpression expr = xpath.compile("//name/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for...
在kml文件中,与使用相同查询的“101”(实际字符串)相反,它不返回任何内容

kml文件具有以下结构:

<Document>
  <Placemark>
    <name>101</name>
    <description><![CDATA[.....]]></description>
    <polygon>
      <coordinates>......</coordinates>
    </polygon>
  </Placemark>

  <Placemark>
  ....
  </Placemark>

</Document>    

101
......
....

有没有办法通过XQuery实现这一点?

使用以下
XPath
表达式,即而不指定
text()


然后使用
节点阅读
CDATA
内容。getTextContent()

发布您的kml示例kml结构现在也包括在内,您使用什么XPath来选择描述<代码>//说明/text()?CDATA中的信息应作为
text()
content返回。是的,这就是我使用的内容。最好是可以的,但我现在对任何数据都很满意。请确保下次发布有效的XML,因为其中存在多个语法错误(关闭标记时没有
/
,未关闭元素,CDATA未正确关闭)。不建议使用text(),但在这种情况下应该可以使用。如果没有,您的XQuery处理器就会有一个bug——它将CDATA节点与文本节点区分开来,这在DOM中是正确的行为,但在XQuery中则不然。
XPathExpression expr = xpath.compile("//description");