使用DOMCategory来解析命名空间xml?

时间:2013-06-24 01:08:19

标签: dom groovy

我的input.xml

<z1:BookNames name="Groovy" dataType="INTEGER" xmlns:z0="messages" xmlns:z2="base" xmlns:z3="number" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:z1="bookcat">
    <z3:BookCost>
        <z3:IntegerValue>1106</z3:IntegerValue>
    </z3:BookCost>
</z1:BookNames>

我的代码 -

document = parse(new FileReader('input.xml'))

rootElement = document.documentElement

println rootElement

use(groovy.xml.dom.DOMCategory)
{
    println rootElement.'@dataType'
    cf =  rootElement.'z3:BookCost'
}

到目前为止,我正在尝试获取图书费用但不成功。你能在这里提出想法吗?我不能将前缀z3声明为'z3:BookCost'z3可以是输入xml中的任何内容。但是命名空间值可以在代码中进行硬编码。

1 个答案:

答案 0 :(得分:2)

以下是使用XmlSlurper的方法:

new File( 'input.xml' ).withReader { x ->
  new XmlSlurper().parse( x ).with { root ->
    println root.@dataType
    println root.BookCost.IntegerValue
  }
}

DOMCategory isn't namespace aware(afaik)