groovy - 如何检查 groovy xmlslurper 中的标签是否包含值或子标签?

标签 groovy xmlslurper

def list="<books>
<book>
<title>xx</title>
<year>xxxx</year>
<book>
</books>" (or) 
def list="
<books>
<book> xxxx <book>
</books>";
def books=new XMLSlurper(list);

我有这样的要求

if (books.book has value ) do something 
else if(books.book has tag ) do something

输入可以是动态变化的第一个或第二个。如何在没有任何迭代或单次检查的情况下实现上述 if 条件?

最佳答案

试试这个代码:

我希望这段代码能够澄清您的需求。

def list1 = "<books><book>xxx</book></books>"

def list2 = "<books><book><new>xxx</new></book></books>"

[list1, list2].each{ text->

def root = new XmlSlurper().parseText(text)


    if (root.book.children().collect{ it.name()})
    {
        println 'book has children : '+ root.book.children().collect{ it.name()}
    }
    else
    {
        println 'book has value :'+root.book
    }
}

关于groovy - 如何检查 groovy xmlslurper 中的标签是否包含值或子标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51517658/

相关文章:

java - spock - 模拟静态方法不起作用

unit-testing - 在Grails中模拟mixin类

xml - 在 Groovy 中对 XML 进行排序

html - 使用 XmlSlurper 时出现 MalformedURLException

java - 无法将 XMLSlurper 添加到 Eclipse Groovy 项目

groovy - 创建一个新类 "on the fly"?

grails - 如何在 grails 中使用 Enum(不在域类中)

grails - 我应该把客户代码放在哪里?

xml - 如何使用 GPathResult 获取下一个 sibling

html - 使用 XmlSlurper 时如何查找有问题的行