Я извлекаю файл XML с удаленного хоста и анализирую его, используя XmlParser
. Содержание файла выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?><Metrics> <Safety> <score>81.00</score> <Percentrules>98.00</Percentrules> </Safety> </Metrics>
Когда я выполняю сценарий вне песочницы Groovy, я могу получить значение счета следующим образом.
def report = readFile(file: 'Qualitycheck.xml')
def metrics = new XmlParser().parseText(report)
println metrics
double score = Double.parseDouble(metrics.Safety.score[0].value()[0])
Однако, когда я выполняю скрипт с использованием SCM, я получаю следующее:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: No such field found: field groovy.util.Node
Проблема сохраняется, хотя я установил Permissive-Script-Security-Plugin
и включил плагин, используя опцию -Dpermissive-script-security.enabled=no_security
JVM. Есть ли что-то другое в этом методе? Никакой другой метод не вызывает проблем. Почему?
Редактировать
Я решил использовать XmlSlurper()
и получил значение 81.00
. Однако результат был типа groovy.util.slurpersupport.NodeChildren
def metrics2 = new XmlSlurper().parseText(report)
def score = metrics2.Safety.score
print score
print score.getClass()
=> 81.0098.00
=> groovy.util.slurpersupport.NodeChildren
Как мне использовать XmlSlurper
, чтобы извлечь значение 81.00
и привести его к double
? Это будет хорошей альтернативой?