You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#脚本组件调整Task Factory生成的XML根节点命名空间前缀

解决XML命名空间前缀修改的C#脚本方案

我明白你要搞定的问题——把Task Factory输出的默认命名空间XML,改成带CSDS前缀的命名空间格式,同时根元素要变成<CSDS:CSDS>。用C#的System.Xml.Linq(LINQ to XML)就能完美解决,我给你写个可以直接在SSIS脚本组件里用的示例:

完整代码示例

using System;
using System.Xml.Linq;
using Microsoft.SqlServer.Dts.Runtime;

public class ScriptMain
{
    public void Main()
    {
        // 1. 获取Task Factory输出的原XML内容
        // 这里假设你已经把原XML存到了SSIS变量里,也可以直接读取文件
        string originalXml = Dts.Variables["User::OriginalXml"].Value.ToString();

        // 2. 加载XML到XDocument对象
        XDocument xmlDoc = XDocument.Parse(originalXml);

        // 3. 定义目标命名空间URI
        XNamespace csdsNamespace = "http://www.datadictionary.nhs.uk/messages/CSDS-v1-0";

        // 4. 修改根元素名称:将默认命名空间下的"CSDS"改为带命名空间关联的"CSDS:CSDS"
        xmlDoc.Root.Name = csdsNamespace + "CSDS";

        // 5. 替换命名空间声明:移除默认无前缀的命名空间,添加带CSDS前缀的声明
        // 先删除原来的默认命名空间属性
        xmlDoc.Root.Attributes()
              .Where(attr => attr.IsNamespaceDeclaration && attr.Value == csdsNamespace.ToString())
              .Remove();
        // 添加新的前缀命名空间声明
        xmlDoc.Root.Add(new XAttribute(XNamespace.Xmlns + "CSDS", csdsNamespace));

        // 6. 输出修改后的XML到SSIS变量或者直接写入文件
        string modifiedXml = xmlDoc.ToString(SaveOptions.OmitDuplicateNamespaces);
        Dts.Variables["User::ModifiedXml"].Value = modifiedXml;

        // 如果要直接写入文件,替换成下面的代码
        // xmlDoc.Save(@"C:\YourOutputPath\ModifiedCSDS.xml");

        Dts.TaskResult = (int)DTSExecResult.Success;
    }
}

代码说明

  • 命名空间保留:我们完全保留了原有的命名空间URI,只是把默认的无前缀声明改成了带CSDS前缀的形式,保证XML的语义不变
  • 根元素重命名:通过给根元素名称绑定命名空间,自动实现<CSDS:CSDS>的格式,无需手动拼接字符串
  • SSIS适配:代码用SSIS变量传递原XML和输出结果,你可以根据自己的实际场景调整(比如直接读取Task Factory生成的XML文件)
  • 去重优化:用SaveOptions.OmitDuplicateNamespaces确保输出的XML不会出现多余的命名空间声明,保持结构整洁

运行这段代码后,你就能得到想要的XML格式:

return (<CSDS:CSDS xmlns:CSDS="http://www.datadictionary.nhs.uk/messages/CSDS-v1-0">
  <CYP000>
    <C000010>1.0</C000010>
  </CYP000>
</CSDS:CSDS>
)

内容的提问来源于stack exchange,提问作者mhep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:10:23