【发布时间】:2014-06-09 16:51:23
【问题描述】:
我是 Visual Studio 和桌面开发的新手。话虽如此,我正在编写一个程序来自动化手动过程,该过程的一部分是从我们的 SQL Server 中提取一些数据并将其推送到 Web API。我能够获取数据,甚至可以将其转换为 XML 以将其发送到 API,不幸的是,生成的 XML 的格式不适合 API,我无法弄清楚如何设置 XML 格式/模式我需要它才能使交易有效。
我正在使用 TableAdapter 来获取所有数据,如果这有什么不同的话,这是我发现从 SQL Server 中提取数据的第一种方法。
我正在使用.WriteXML() 生成我的 XML 文件,这给了我
<Subscribers xmlns="http://tempuri.org/Subscribers.xsd">
<Subscriber>
<Email>email@email.com</Email>
<FirstName>FNAME</FirstName>
<LastName>LNAME</LastName>
<City>MyCity</City>
<State>MyState</State>
<Zip>MyZip</Zip>
<Country>MyCountry</Country>
<SessionDate />
</Subscriber>
</Subscribers>
这是我用来与.WriteXML() 通话的电话
public void WriteXMLFile()
{
System.IO.FileStream stream = new System.IO.FileStream(filename, System.IO.FileMode.Create);
EmailDriectUpload.Subscribers Subscribers = ((EmailDriectUpload.Subscribers)(this.FindResource("Subscribers")));
Subscribers.WriteXml(stream);
}
我根据我发现的另一个问题尝试使用 .ExtendProperties.Add(),但没有运气。
我需要的样子是
<Subscribers xmlns="http://tempuri.org/Subscribers.xsd">
<Subscriber>
<Email>email@email.com</Email>
<CustomFields>
<CustomField>
<FieldName>FirstName</FieldName>
<Value>FNAME</Value>
</CustomField>
<CustomField>
<FieldName>LastName</FieldName>
<Value>FNAME</Value>
</CustomField>
<CustomField>
<FieldName>City</FieldName>
<Value>MyCity</Value>
</CustomField>
<CustomField>
<FieldName>State</FieldName>
<Value>MyState</Value>
</CustomField>
<CustomField>
<FieldName>ZipCode</FieldName>
<Value>MyZip</Value>
</CustomField>
<CustomField>
<FieldName>Country</FieldName>
<Value>MyCountry</Value>
</CustomField>
</CustomFields>
</Subscriber>
</Subscribers>
我上个月开始使用 VS2013,所以我并不完全熟悉 SDK 及其提供的所有功能。我目前也只使用 VS2013 Express,如果这是问题的一部分,我可以考虑购买 PRO。
过去几天我一直在这里搜索,并为该计划的其他领域找到了很多很大的帮助,但似乎无法确定我正在尝试做的事情是否可以按照我的方式进行'我试图做到这一点。如果有更好的方法来处理这个问题,请务必指出我的方向。我完全赞成学习处理事情的新方法。
提前致谢。在此期间我会继续打猎。
【问题讨论】:
-
请考虑从帖子中删除您的生活故事 - “这里是新的”、“搜索了很多”、“刚刚安装”,不要在您的问题中添加信息,这会使您更难弄清楚您在寻找什么.
-
您提到源数据来自 SQL 数据库,但您正试图将其转换为 C# 中的 XML。这是出于性能考虑吗?您不能只使用 SQL 内置的 XML 格式从 SqlDataAdapter 返回 XML 吗?看看这篇文章...stackoverflow.com/questions/11647829/…
-
@AlexeiLevenkov 当然可以。我觉得它为我所在的位置提供了参考。我没有讲述我的生活故事,只是简单地陈述了新人的身份,如果我做的不正确,请指出我正确的方向。只是为了构建我的经验以帮助人们帮助我。
-
@Love2Learn 这不是为了表现。我之前在 SQL 中使用过 FOR XML。我可能需要重新审视它。我也无法以这种方式正确格式化数据。但是,我会查看您的链接,因为它是我没有看到的新信息。谢谢
-
呃,我在 sql 中编写了代码,在尝试关闭我创建的 XML 窗口时意外关闭了查询窗口。我不想再写一遍,但我可以告诉你,我发现的最简单的方法是在输出中有一个嵌套查询,该查询使用 UNPIVOT 获取 CustomFields 并加入到电子邮件上的外部查询.
标签: c# sql-server xml visual-studio-2013