如何使用Azure Data Factory或其他方案移除ADLS中存储XML的特殊字符
ADF 实现ADLS存储XML标签内部字符移除的可行方案
原生数据流字符串正则替换
适用于XML结构简单、无需严格区分标签边界的场景,纯ADF原生能力即可实现:- 源转换读取ADLS中的XML文件时,配置为整文件读取为单一字符串列
- 新增派生列转换,调用
regexReplace()函数精准匹配目标标签内部内容,替换掉需要移除的字符。比如要移除<desc>标签内的特殊符号,可参考写法:regexReplace(whole_content, '(?<=<desc>)[\\s\\S]*?(?=</desc>)', replace(match, '[!@#$%^&*]', '')) - 处理完成后直接将字符串列写入ADLS目标路径,保留.xml后缀即可
结构化XML解析后再序列化
适用于XML结构复杂、嵌套层级多的场景,可避免正则误匹配:- 源转换选择XML格式,配置XSD schema或者开启自动检测,将各个标签内容映射为独立的结构化字段
- 对需要处理的标签对应字段,调用
replace()、trim()等字符串函数移除指定字符 - 添加XML序列化转换,将处理后的结构化字段重新组装为标准XML格式
- 输出到ADLS对应存储路径
自定义活动调用外部处理逻辑
适用于处理逻辑非常复杂、内置函数无法满足需求的场景:- 将XML处理逻辑封装为Python/Java脚本,发布为Azure函数,或者上传到Azure Batch节点
- ADF中添加Azure函数活动/自定义Batch活动,传入待处理文件的ADLS路径参数,由外部脚本完成文件读取、字符移除、结果写回的全流程
内容的提问来源于stack exchange,提问作者Gunesh Pandharpurkar
相关产品推荐
相关产品推荐

