我需要帮助才能使用XElement将XML元素导入SQL Server。运行代码时,MessageBox.Show(element.ToString(), "element.value");
在MessageBox中正确显示<FIELD fieldName="ID">1234567</FIELD>
和<FIELD fieldName="DateTime">05/02/2018 09:00:28</FIELD>
。我现在可以使用它上传到SQL Server中的tblMain吗?
基本上,这是一个字符串,从Outlook中的.msg正文保存为输入。此msg主体将所有文本作为XML形式以纯文本格式显示在主体中。
我将输入的字符串作为xml文档加载到XmlDocument中。
然后使用XElement将输入解析为xml。我使用xml后代为(“ FIELD”)创建一个变量xitems,在其中运行一个foreach循环作为xitems中的变量元素。现在,输出显示在MessageBox中。
请问,我正在寻找的是详细的帮助,该如何将它放入SQL Server到名为tblMain的表中以简化操作,它具有两列ID和DateTime?
代码:
for (int i = 1; i < publicFolder.Items.Count; i++)
{
item = (PostItem)publicFolder.Items[i];
if (item != null)
{
//MessageBox.Show(item.Body, "Body");
//save the msg body into the string
string input = item.Body;
//load the string input as xml document
XmlDocument doc = new XmlDocument();
doc.LoadXml(input);
XElement xml = XElement.Parse(input);
var xitems = xml.Descendants("FIELD");
foreach (var element in xitems)
{
MessageBox.Show(element.ToString(), "element.value");
}
////Create new instance of SQL Connection
//SqlConnection conn = new SqlConnection();
xml文件为:https://imgur.com/a/epCLd22
答案 0 :(得分:0)
此SQL代码可以指导您如何完成任务:
DECLARE @ColNamesCommaSeparated NVARCHAR(MAX)
DECLARE @ValuesCommaSeparated NVARCHAR(MAX)
DECLARE @xml XML
SET @xml = '
<ROOT>
<FIELD fieldName="ID">1234567</FIELD>
<FIELD fieldName="DateTime">05/02/2018 09:00:28</FIELD>
</ROOT>
'
;WITH Result AS
(
SELECT
T.n.value('@fieldName','VARCHAR(100)') AS ColName,
T.n.value('.','VARCHAR(100)') AS Val
FROM @xml.nodes('/ROOT/*') T(n)
)
SELECT @ColNamesCommaSeparated =
STUFF(
(SELECT ', ' + ColName
FROM Result
FOR XML PATH ('')), 1, 1, ''),
@ValuesCommaSeparated =
STUFF(
(SELECT ', ' + '''' + Val + ''''
FROM Result
FOR XML PATH ('')), 1, 1, '')
DECLARE @sqlCommand NVARCHAR(MAX)
SET @sqlCommand = 'INSERT INTO tblMain (' + @ColNamesCommaSeparated + ') VALUES (' + @ValuesCommaSeparated + ')'
EXEC(@sqlCommand)
因此,您可以创建一个存储过程,该存储过程接受xml作为传递参数。然后只需在您的C#代码中执行此sp。