Как преобразовать поток (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");
}
}