来自xsd的DataSet使用孤儿子生成xml

时间:2014-04-03 01:21:36

标签: xml xsd dataset orphan

我的要求是根据xsd和一组与xsd中不同节点相关联的查询来加载生成xml文件。 它还需要对数据进行分页,以便将xml拆分为多个文件,但保持顶级节点的完整性(我的意思是在根之后的下一级)。 我的方法是使用数据加载数据集。如果不需要分页则一切正常,但是当包含分页时,我获得了顶级节点下所有级别的孤立节点。我认为拥有所有关系的数据集会阻止孤立行。 有没有办法确保结果没有孤儿?

这是我的代码:

for (int page = 1; page <= pages; page++)
{
    foreach (DataTable dataTable in dataSetSchema.Tables)
    {
        if (dataTable.TableName == releasedOutput.PartitionNode)
        {
            var pagedSql = @"WITH pagingOutputSchema As ( SELECT ROW_NUMBER() OVER(ORDER BY idnkey) as RowNumber, idnkey FROM {0} )
SELECT *
FROM {0} INNER JOIN
pagingOutputSchema ON {0}.idnkey = pagingOutputSchema.idnkey
WHERE pagingOutputSchema.RowNumber BETWEEN ({1} - 1) * {2} + 1  AND {1} * {2} 
ORDER BY 1".FormatWith(tmpFullTableName, page, rowsPerPage);
            _schemaXMLHandler.FillTableInDataSet(releasedOutput.Prefix, pagedSql, dataSetSchema, partitionNode);
        }
        else
        {
            var node = nodes.GetNodeByName(dataTable.TableName);
            _schemaXMLHandler.FillTableInDataSet(releasedOutput.Prefix, node.Sql, dataSetSchema, node);
        }
    }
    //this saves the loaded schema into a file
    var dstFileName = fileNamePre + "_part_" + (fileIndex) + ".xml";
    using (var fileStream = File.Create(dstFileName))
        dataSetSchema.WriteXml(fileStream);

    fileIndex++;
}

0 个答案:

没有答案