将管道SQL数据插入XML

时间:2013-11-12 20:53:26

标签: c# sql sql-server xml insert

我需要将SQL Server查询的结果推送到我目前存储在标有xmlpush的字符串中的XML文档中。

SQL数据是使用管道分隔但没有xml标记的原始文本数据。如果需要的话,我可以将它从SQL中带入DataSet而不需要管道。

将其插入XML字符串的最佳方法是什么?

XML就像下面的内容。我需要将标头加载到名为Header的单独标签中,然后将每行加载到名为row的标签中。

<?xml version='1.0' encoding='UTF-8'?>
<call method="load">
<credentials login="sampleuser"/>
<importDataOptions jobsize="false"/>
<version name="12" isDefault="false" />
<rowData>
<header>1st row from the data set</header>
<rows>
<row>2nd row from dataset here</row>
<row>3rd row from the dataset here</row>
</rows>
</rowData>
</call>

我对XSLT一无所知,对XPATH也一无所知。

我目前的想法是设置一个循环来读取每一行并用标签包装它然后再推送到堆栈然后用x /

连接xml
begin + stack + end

我很欣赏这方面的任何指示?我正在使用c#。数据集可以包含大约300-700行。

提前致谢。

2 个答案:

答案 0 :(得分:1)

基本上,您看起来只是以上面指定的格式构建XML字符串,并使用查询结果行中的内容填充某些标记。

的伪代码:

var myXML = @"<?xml version='1.0' encoding='UTF-8'?>
<call method="load">
<credentials login="sampleuser"/>
<importDataOptions jobsize="false"/>
<version name="12" isDefault="false" />
<rowData>";

var firstRow = true;

while(dataset.hasrows){
    if(firstRow)
    {
        firstRow = false;
        myXML+= "<header>" + 1st row from the data set + "</header><rows>";
    }
    else
    {
        myXML+= "<row>"+ Nth row from dataset here+"</row>";
    }
}

myXML += @"</rows>
</rowData>
</call>";

您拥有多少行并不重要,您的XML字符串会更长。之后,您可以从该字符串创建XML文件。最后,关于XSLT,据我所知,它需要XML作为输入,因此不需要构建XML。

答案 1 :(得分:1)

SqlServer有一个FOR XML选项,听起来可以做你想做的事情:

http://technet.microsoft.com/en-us/library/ms178107.aspx