【问题标题】:Parsing an XML in Groovy through XML Slurper通过 XML Slurper 在 Groovy 中解析 XML
【发布时间】:2014-01-27 12:38:55
【问题描述】:

我在 groovy 中通过 XMLSlurper 解析 xml 时遇到了这个奇怪的问题,它显示大小为 0。不知道为什么。

我的 xml 文件如下所示:

<?xml version="1.0" encoding="iso-8859-1"?>
<sites>
    <site name="OctUK">
        <property name="warName">OctUKbuild-Deployable</property>
    </site>
    <site name="GbsJP">
        <property name="warName">GbsJPbuild-Deployable</property>
    </site>
</sites>

代码:

findSite("${project.GTA_BUILD_HOME}/platforms/pos/config/pos-sites.xml")

//Passed the path of the xml file to the method below:
GPathResult findSite(String sitesXml) {
    xmlConfig = new XmlSlurper().parse(new File(sitesXml))  
    def siteGPath = xmlConfig.sites.site.findAll
    // Check that a POS-sites.xml is valid
    assert siteGPath.size() != 0, 'Error: no site found'
    return(siteGPath)
}

该方法失败并显示错误消息:找不到站点,因为它给出了 siteGPath 的结果为 0。不确定为什么它给出的结果为 0。它的大小应该为 2。

我做错了什么吗。任何帮助深表感谢。我被困在这一点上。

【问题讨论】:

    标签: groovy xmlslurper


    【解决方案1】:

    查看xmlConfig 对象时不需要sites

    sites是根节点,所以是隐含的,试试:

    assert xmlConfig.site.size() == 2
    

    另外,xmlConfig.siteNodeChildren 的一个实例,但您似乎声明了GPathResult 的返回类型

    而且我不确定您的 findAll 调用末尾缺少什么,因为这应该是一个闭包或空括号

    【讨论】:

    • 谢谢蒂姆。我现在已将代码修改为 def siteGPath = xmlConfig.site
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2022-04-04
    • 2023-03-17
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    相关资源
    最近更新 更多