使用DOMCategory在XML查找中遇到命名空间问题

时间:2013-04-26 09:21:41

标签: groovy closures xml-namespaces

尝试查找XML文档中的某个节点时,我遇到了名称空间问题。这是我正在使用的代码:

简化的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
        <map:generators>
            ...
            <map:generator name="FinsXMLGenerator"/>
        </map:generators>
    ...

我正在尝试接收以下节点:

<map:generator name="FinsXMLGenerator"/>

使用以下DOMCategory闭包:

def closure = { sitemap -> 
    def result = sitemap.'map:sitemap'.'map:components'.'map:generators'.'map:generator'.'@name'.find({ 
        it.text() == 'FinsXMLGenerator' 
    }); 
    return result; 
}

我在XML中编写了很多没有名称空间的闭包,这些闭包很好用。但命名空间会破坏一切 我没有得到任何错误,结果只是null。任何人都可以帮我修复路径 - 例如。

sitemap.'map:sitemap'...

我正在使用Groovy。

1 个答案:

答案 0 :(得分:1)

尝试:

def node = use( DOMCategory ) {
  sitemap.'map:components'.'map:generators'.'map:generator'.find {
    it.getAttribute( 'name' ) == 'FinsXMLGenerator'
  }
}