【问题标题】:Count XML Nodes Script Task SSIS计数 XML 节点脚本任务 SSIS
【发布时间】:2017-05-31 15:48:43
【问题描述】:

我有以下 xml:

<Users>
    <User ID="User1"
         <Element1>Name1<Element1>
    </User>
    <User ID="User2"
        <Element1>Name2<Element1>
    </User>
    <User ID="User3"
        <Element1>Name3<Element1>
    </User>
</Users>

此 XML 在 SSIS 中创建并存储在字符串变量中。 在执行下一步之前,我需要计算用户节点,并且我想使用脚本任务来完成。这是我认为我需要做的事情

// assign string to a variable
String XMLString = Dts.Variables["User::XMLString"].Value
// Convert variable to xml data type: 
XmlSerializer serializer = new XmlSerializer(XMLString );
//Count the user nodes and assign integer to a variable.
Dts.Variables["User::UserCount"].Value = serializer.SelectNodes("Users/User").Count;

我一直在试图弄清楚如何做到这一点,但我对 C# 还是很陌生,我真的需要一个关于这个的例子。 谢谢!

【问题讨论】:

  • stackoverflow.com/questions/17678480/… 或使用XPATH查看如何执行此操作
  • 在定义XMLString 变量时,您应该使用string 而不是Stringstring 和小的s 是数据类型,另一个是类。
  • 谢谢你们提供的信息!

标签: c# sql-server visual-studio-2015 ssis


【解决方案1】:

你可以这样做:

        string XMLString = Dts.Variables["User::XMLString"].Value;
        Dts.Variables["User::UserCount"].Value = (Regex.Matches(XMLString, @"</User>")).Count;

this link 中查看代码。

【讨论】:

  • 这很好用。我只需要添加即可将变量转换为字符串。非常感谢!
【解决方案2】:

试试这个:

XmlDocument doc = new XmlDocument();
doc.Load(XMLString);
Dts.Variables["User::UserCount"].Value = doc.SelectNodes("User").Count;

【讨论】:

  • 感谢您,但脚本任务没有成功运行。我添加了以下代码,一旦到达 XmlDocument,它就永远不会完成: string XMLString = Dts.Variables["User::XMLString"].Value.ToString(); XmlDocument 文档 = 新 XmlDocument(); doc.Load(XMLString); Dts.Variables["User::UserCount"].Value = doc.SelectNodes("User").Count; Dts.TaskResult = (int)ScriptResults.Success;
猜你喜欢
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
相关资源
最近更新 更多