0

我正在使用 Groovy 1.8.6 解析在描述元素中具有 CDATA 的 KML 文件并返回父(即地标)元素。KML 如下所示:

    <Placemark>
    <description><![CDATA[
      ID=SVM10<br>
    ]]></description>
    </Placemark>

并将作为第一个参数输入到 Groovy 代码中,如下所示:

    def reader = new FileReader(args[0])
    def doc = DOMBuilder.parse(reader)
    def content = doc.documentElement

    use (DOMCategory) {
      def point = content.Document.Placemark.findAll{ it.text().contains('SVM') }
      println point.size()
    }

但它显示 0 - 即没有找到记录。如何修改代码以便它可以在 CDATA 括号中找到内容?

4

1 回答 1

0

不知道为什么您的代码不起作用,但您可以使用 XPath 来做同样的事情:

package groovyxml

import groovy.xml.DOMBuilder
import javax.xml.xpath.*

String source = """
<Placemark>
    <description>oo<![CDATA[
      ID=SVM10<br>
    ]]>aa</description>
    </Placemark>
    """

    def reader = new StringReader(source)
    def doc = DOMBuilder.parse(reader)
    def xpath = XPathFactory.newInstance().newXPath()
    def point = xpath.evaluate( 
      "/Placemark/description[contains(text(), 'SVM')]", 
      doc, 
      XPathConstants.NODESET )
    println point.length

...打印 1。

于 2013-02-24T10:34:28.343 回答