Groovy вопрос для чтения xml и base64decode - PullRequest
0 голосов
/ 05 января 2020

Я хочу изменить вывод входящего сообщения (как показано в Модифицированном XML).

Входящий XML

<xml>
<Body>
   <Request>
     <Container>
        <name>test</name>
        <Numbers>
             <sn>//base64encodedstring//</sn>
             <sn>//base64encodedstring//</sn>
             <sn>//base64encodedstring//</sn>
        </Numbers>
     </Container>
  </Request>
</Body>
</xml>

Изменено XML

<xml>
<Body>
   <Request>
     <Container>
        <name>test</name>
        <Numbers>
             <sn>//Decodedstring//</sn>
             <sn>//Decodedstring//</sn>
             <sn>//Decodedstring//</sn>
        </Numbers>
     </Container>
  </Request>
</Body>
</xml>

Согласно полученному ответу: я могу создать массив ListOfResults.

def listOfResults = new XmlSlurper()
.parseText(xml)
.Body.Request.Container.Numbers.sn
.collect { new String(it.text().decodeBase64()) }

Я могу сделать следующее

def data = "<xml><Body><Request><Container><name>test</name><Numbers>"
for (i= 0; i <listOfResults.size(); i++)
{
 data = data +"<sn>" +listOfResults[i] + "</sn>";
} 
data = data + "<Numbers></Container></Request></Body></xml>";

Измененные данные

<xml><Body><Request><Container><name>test</name>
 <Numbers>
 <sn>decoded string</sn>
 <sn>decoded string</sn>
 <sn>decoded string</sn>
</Numbers> </Container></Request></Body></xml>

Это самый быстрый способ выполнить эту операцию? Есть ли другой способ лучше?

1 Ответ

0 голосов
/ 06 января 2020

Вы должны это сделать (при условии, что ваш XML находится в строковой переменной с именем xml):

def listOfResults = new XmlSlurper()
    .parseText(xml)
    .Body.Request.Container.Numbers.sn
    .collect { new String(it.text().decodeBase64()) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...