【发布时间】:2016-07-20 15:23:00
【问题描述】:
我有一个 xml 文档,例如:
<start>
<action>
<message id="1" result="success">This is my message 1</message>
</action>
<action>
<message id="2" result="failure">This is my message 2</message>
</action>
<action>
<message id="2" result="success">This is my message 3</message>
</action>
</start>
我需要计算 SSIS 的 xml 文件中有多少条成功消息和多少条失败消息。现在不允许将 XML 文件导入 SSIS,所以我在控制流中添加了一个脚本任务,并添加了下面的代码来读取 xml:
XmlDocument doc = new XmlDocument();
doc.Load(Dts.Variables["filename"].Value.ToString());
XmlNode node= doc.SelectSingleNode("/start/action/hl7");
MessageBox.Show(node.Attributes["result"].InnerText);
这是返回第一个消息的结果,“只有成功;但我也想查看其他 2 个结果(失败,成功)。这一定是因为 SelectSingleNode 方法,但我找不到像 SelectMultipleNodes 这样的东西,有没有其他选择?我尝试了下面的代码,但它给出了:Object reference not set to an instance of an object
foreach (XmlNode node in doc.DocumentElement.ChildNodes)
{
//MessageBox.Show(node.InnerText);
MessageBox.Show(node.Attributes["result"].InnerText);
}
但是,请注意MessageBox.Show(node.InnerText);在 xml 中显示所有三个消息,但我需要它的“结果”属性并且我无法修复那里的错误。另请注意,使用node.Attributes[1].InnerText 会给出“给定的索引超出范围”错误。
任何帮助将不胜感激。谢谢。
【问题讨论】: