Как преобразовать поток (XML-строку) в XML в Ballerina 0.990?

Поддержка преобразования строки в XML была удалена в Ballerina 0.990. Есть ли безопасный метод для преобразования строк XML в тип xml в 0.990 и выше?

До версии Ballerina 0.990 строку XML можно было преобразовать в тип xml следующим образом:

string myXMLStream = "<root><foo/></root>";
xml myXML = <xml>myXMLStream;

С версией 0.990 (и 0.990.1) это приводит к ошибке:

'строка' не может быть явно введена как 'xml'

В то время как я использовал следующее в 0.990.1:

string myXMLStream = "<root><foo/></root>";
xml myXML = <xml>`{{myXMLStream}}`;

без ошибок во время компиляции результирующее содержимое myXML не может быть успешно отправлено как XMLPayloads в конечную точку:

http:Request reqProcessXML = new;
reqProcessXML.setXMLPayload(untaint myXML);
var respProcessXML = myEndpoint->post("/myResource",reqProcessXML);

Это приводит к ошибке:

{ballerina / http} HTTPError {message: "Не удалось отправить outboundRequestMsg в бэкэнд"}

Если содержимое XML явно создано:

xml myXML = <xml>`<root><foo/></root>`;

остальная часть последующей обработки прошла успешно.

Пожалуйста, предоставьте руководство по лучшей / безопасной практике для преобразования строки в XML с текущей версией Ballerina.

1 ответ

Вы можете сделать следующим образом.

import ballerina/io;

public function main() {
    string myXMLStream = "<root><foo/></root>";
    io:StringReader reader = new io:StringReader(myXMLStream);
    xml|error? myXML = reader.readXml();
    if (myXML is xml) {
        io:println(myXML);
    } else {
        io:println("Something else");
    }
}
Другие вопросы по тегам