【发布时间】:2011-11-04 03:21:53
【问题描述】:
我真的很纠结如何在我的 winforms C# 应用程序中完成以下任务。我的代码可以在带有 VBA 的旧 Access 数据库中工作,但我需要对其进行转换。
- 我收到一个 XML 文件,其中包含特定用户的交易数据。
- 我还有一个存储在 SQL Server 环境中的操作列表。
- 我需要遍历XML中的事务,看看事务的动作是否是第二步的动作之一。
- 如果在遍历我的操作列表后,我还有任何交易。返回记录数。
示例 XML:
<TransactionsResponse>
- <Transactions>
- <Transaction>
<AccountId>1</AccountId>
<ActionType>test</ActionType>
</Transaction>
- <Transaction>
<AccountId>1</AccountId>
<ActionType>blah</ActionType>
</Transaction>
- <Transaction>
<AccountId>1</AccountId>
<ActionType>no</ActionType>
</Transaction>
- <Transaction>
<AccountId>1</AccountId>
<ActionType>yes</ActionType>
</Transaction>
- <Transaction>
<AccountId>1</AccountId>
<ActionType>testing</ActionType>
</Transaction>
- <Transaction>
<AccountId>1</AccountId>
<ActionType>lame</ActionType>
</Transaction>
</Transactions>
</TransactionsResponse>
如果我的操作列表包括以下内容,那么我上面的 XML 总共有 6 条记录:
test
blah
我需要遍历事务,然后是操作列表,这将导致最终记录计数为 4。
我在想我可以先循环遍历 XML 以获得总记录数,然后再次循环遍历它,检查操作是否存在,然后将我的记录数减一。
我是 C# 中使用 XML 的新手,所以我完全不知道如何继续。任何意见或建议都会很棒。
【问题讨论】:
-
您正在使用哪个版本的 C# 进行编程?如果您使用的是 C# 3.0 或更高版本,则可以使用 Linq To Xml API 处理 XML。
-
@PawanMishra:重要的不是 C# 版本,而是您所针对的 .NET 版本。您可能在 VS2010 中使用 C# 4,但针对 .NET 2,您将无法使用 LINQ to XML...