如何使用groovy.util.XmlParser访问包含句点的XML节点

问题描述 投票:1回答:1

我需要读取一个XML文件,其中某些节点名称包含句点,这是一个示例:

<build>
  <actions>
    <hudson.model.ParametersAction>
      <safeParameters class="sorted-set"/>
      <parameters>
        <hudson.model.StringParameterValue>
...

当我尝试使用标准的build.actions.hudson.model.ParametersAction.parameters时,我得到了

groovy.lang.MissingPropertyException: Exception evaluating property 'hudson' for java.util.concurrent.CopyOnWriteArrayList, Reason: groovy.lang.MissingPropertyException: No such property: hudson for class: hudson.model.ParametersAction

我也试过build.actions.'hudson.model.ParametersAction'.parameters这个错误:

groovy.lang.MissingPropertyException: Exception evaluating property 'hudson.model.ParametersAction' for java.util.concurrent.CopyOnWriteArrayList, Reason: groovy.lang.MissingPropertyException: No such property: hudson.model.ParametersAction for class: hudson.model.ParametersAction

我怎样才能访问这个属性?

groovy xml-parsing
1个回答
1
投票

你是对的,有必要用引号包围一个“句号”元素。以下代码适合我。如果它仍然不适合你,那么如果你共享实例化XmlParser并解析xml的代码片段会更好。

def xml = """
<build>
    <actions>
        <hudson.model.ParametersAction>
            <safeParameters class="sorted-set"/>
            <parameters>
                <hudson.model.StringParameterValue>foo</hudson.model.StringParameterValue>
            </parameters>
        </hudson.model.ParametersAction>
    </actions>
</build>
"""
def parser = new XmlParser()
def build = parser.parseText(xml)
println(build.actions.'hudson.model.ParametersAction'.parameters.'hudson.model.StringParameterValue'.text())
//prints foo as a result
© www.soinside.com 2019 - 2024. All rights reserved.