C# 将管道SQL数据插入XML

C# 将管道SQL数据插入XML,c#,sql,sql-server,xml,insert,C#,Sql,Sql Server,Xml,Insert,我需要将SQL Server查询的结果推送到一个XML文档中,该文档目前已存储在标记为xmlpush的字符串中 SQL数据是用管道分隔的原始文本数据,但没有xml标记。如果需要的话,我可以将它从SQL带到一个没有管道的数据集中 将其插入XML字符串的最佳方式是什么 XML如下所示。我需要将标题加载到名为header的单独标记中,然后将每一行加载到名为row的标记中 <?xml version='1.0' encoding='UTF-8'?> <call method="load

我需要将SQL Server查询的结果推送到一个XML文档中,该文档目前已存储在标记为xmlpush的字符串中

SQL数据是用管道分隔的原始文本数据,但没有xml标记。如果需要的话,我可以将它从SQL带到一个没有管道的数据集中

将其插入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>
我希望你能给我一些建议?我用的是c。数据集可以有大约300-700行


提前感谢。

基本上,您只是按照上面指定的格式构建一个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>";
var myXML=@”
";
var firstRow=true;
while(dataset.hasrows){
如果(第一行)
{
第一行=假;
myXML+=“”+数据集中的第一行+“”;
}
其他的
{
myXML+=“”+此处数据集的第n行+“”;
}
}
myXML+=@”
";

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

SqlServer有一个for XML选项,听起来它可以做您想要的事情:


你探索过这个方法吗?如果您控制两端(XML的生产者和消费者),并且对格式没有严格要求,那么这是最简单的方法。谢谢你的指点。这看起来很有趣。我目前正在将我的字段强制转换为varchars并添加|,因此FOR 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>";