【问题标题】:How can stream (XML string) be converted to XML in Ballerina 0.990?如何在 Ballerina 0.990 中将流(XML 字符串)转换为 XML?
【发布时间】:2018-12-28 01:12:45
【问题描述】:

Ballerina 0.990 中删除了对字符串到 XML 的转换支持。 0.990及以上有没有安全的方法将xml字符串转换为xml类型?

在 Ballerina 版本 0.990 之前,可以通过以下方式将 XML 字符串转换为 xml 类型:

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

对于版本 0.990(和 0.990.1),这会导致错误:

'string' 不能显式输入为'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>`;

其余的下游处理成功。

请提供有关使用当前版本的 Ballerina 将字符串转换为 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");
        }
    }
    

    【讨论】:

    • 谢谢曼努里。明白了!
    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2012-07-13
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多