我使用Groovy 1.8.6解析在description元素中具有CDATA的KML文件,并返回父元素(即Placemark)元素。 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括号中找到内容?
答案 0 :(得分: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。