Как получить доступ к узлу XML, содержащему точку, используя groovy.util.XmlParser - PullRequest
1 голос
/ 15 марта 2019

Мне нужно прочитать файл 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

Как я могу получить доступ к этому свойству?

1 Ответ

1 голос
/ 16 марта 2019

Вы правы, что необходимо заключить элемент "periodish" в кавычки.Приведенный ниже код работает для меня.Если это все еще не работает для вас, будет лучше, если вы поделитесь фрагментом кода, который создает экземпляр 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
...