Groovy从已知节点数组中选择NodeChild

时间:2014-08-11 13:26:35

标签: xml groovy

我有一个可能的节点名称数组,我需要遍历数组,如果node.text()不为null或为空,则将其附加到字符串以构建XML字符串。

我正在解析Excel电子表格,每一行都变成一条记录,然后每条记录由XmlSlurper()解析.parseText()

我的问题是我无法使用currentNode.val.text(),currentNode。“$ {val}”。text()来获取文本,但是它将使用currentNode.node1来提取文本。文本()。

    allFields = ["node1","node2","node3"]

    NodeChild currentNode = it

    for (int z=0; z<allFields.size; z++){

       val = allFields[z[.toString()

       if (currentNode.val.text() == null || currentNode.val.text() ==""){
           do something
       }
       else{
            do something else
       }
   }

1 个答案:

答案 0 :(得分:0)

currentNode.val.text()将拉出节点val。您可以只搜索您的节点:

def xmlText = '''\
<?xml version="1.0" encoding="utf-8"?>
<root>
<node1>some 1</node1>
<node2>some 2</node2>
<node3></node3>
<node4>some 4</node4>
<node5>some 5</node5>
</root>'''
def xml = new XmlSlurper().parseText(xmlText)
def whitelist = ['node1', 'node3']
xml.'**'.findAll{ it.name() in whitelist }.each{
        if (!it.text()) {
                println 'Emtpy'
        } else {
                println "Hit: ${it.text()}"
        }
}