1

我需要将 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 知之甚少。

我目前的想法是设置一个循环来读取每一行并用标签包装它,然后再推送到堆栈,然后将 xml 与类似的东西连接起来

begin + stack + end

我会很感激这方面的任何指示?我正在使用 c#。数据集可以有大约 300-700 行。

提前致谢。

4

2 回答 2

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 不需要它。

于 2013-11-12T22:36:54.607 回答
1

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

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

于 2013-11-12T22:41:04.140 回答