如何修改Azure PowerShell Function App格式化Logic App生成的单行XML文件
实现XML美化格式化的配置方案
一、修改Function App PowerShell代码
以下是调整后的可直接使用的代码,支持从Logic App传入原始单行XML内容,返回格式化后的XML,不需要额外配置存储访问权限,易用性更高:
using namespace System.Net # 输入绑定通过参数块传入 param($Request, $TriggerMetadata) Write-Host "PowerShell HTTP触发函数开始处理XML格式化请求" # 从请求体读取原始XML内容 $rawXml = $Request.Body.RawXml if (-not $rawXml) { Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{ StatusCode = [HttpStatusCode]::BadRequest Body = "请求未携带RawXml参数,请传入需要格式化的XML内容" }) exit } try { # 转换为XML对象自动格式化 $xml = [xml]$rawXml $stringWriter = New-Object System.IO.StringWriter $xml.Save($stringWriter) $formattedXml = $stringWriter.ToString() Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{ StatusCode = [HttpStatusCode]::OK Body = $formattedXml ContentType = "application/xml" }) } catch { Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{ StatusCode = [HttpStatusCode]::InternalServerError Body = "XML格式化失败,错误信息:$($_.Exception.Message)" }) }
如果你坚持采用传入文件路径读写存储的方案,需要先给Function App的系统分配托管身份,授予对应存储账户的「Blob数据参与者」权限,再在代码中引入Azure存储模块,根据传入的存储账户、容器、Blob路径参数读写文件即可。
二、Logic App 配置步骤
- 在Logic App中生成单行XML的动作之后,新增「调用Azure函数」动作,选择你创建的ParseXML函数
- 配置函数的请求方法为POST,请求体设置为:
{"RawXml": "@{此处替换为你生成XML的动作输出}"} - 调用函数完成后,新增「创建Blob」(或对应保存文件的动作),将函数返回的内容作为文件内容保存到目标路径即可
注意事项
- 如果原始XML存在特殊字符或格式错误,会导致格式化失败,可在Function代码中增加异常捕获逻辑处理这类场景
- 如需处理GBK等非UTF8编码的XML文件,可在转换为XML对象时指定对应编码,避免乱码
内容的提问来源于stack exchange,提问作者tommyhmt
相关产品推荐
相关产品推荐

