C# 从.NET调用时,从SQL Server 2005返回的Xml原始数据不正确

C# 从.NET调用时,从SQL Server 2005返回的Xml原始数据不正确,c#,.net,sql,sql-server-2005,.net-3.5,C#,.net,Sql,Sql Server 2005,.net 3.5,我有一个存储过程,它返回XML raw的XML raw数据,类似于以下格式: <row codelistid="1" codelistname="LOCATION" codeid="1557" codename="Hors Ile de France" languageid="1" /> 如果我将存储过程更改为输出数据而不是XML,并通过SQLDataReader读取数据,它似乎可以正常工作 有谁知道为什么会发生这种情况,因为我希望数据库返回XML 提前感谢。如

我有一个存储过程,它返回XML raw的XML raw数据
,类似于以下格式:

<row 
    codelistid="1" codelistname="LOCATION" 
    codeid="1557" codename="Hors Ile de France" languageid="1" />
如果我将存储过程更改为输出数据而不是XML,并通过SQLDataReader读取数据,它似乎可以正常工作

有谁知道为什么会发生这种情况,因为我希望数据库返回XML


提前感谢。

如果将查询数据放入数据集中,然后将该数据集写入XML,该怎么办

public GetXmlFromDataSet()
{
    DataSet myDataSet = new DataSet();
    DbDataAdapter myDataAdapter = DatabaseFactory.CreateDataAdapter();
    DbConnection DatabaseConnection = new DatabaseConnection(/*put appropriate values here*/);
    XmlTextWriter myXmlTextWriter = new XmlTextWriter(/*put appropriate values here*/)

    myDataDapter.SelectCommand = DatabaseFactory.CreateCommand();
    myDataDapter.SelectCommand.CommandType = CommandType.StoredProcedure;
    myDataAdapter.CommentText = "EXEC MyStoredProc";
    myDataAdapter.SelectCommand.Connection = DatabaseConnection;
    myDataAdapter.Fill(myDataSet);
    myDataSet.WriteXml(myXmlWriter);
}

如果将查询数据放入数据集中,然后将该数据集写入XML,会怎么样

public GetXmlFromDataSet()
{
    DataSet myDataSet = new DataSet();
    DbDataAdapter myDataAdapter = DatabaseFactory.CreateDataAdapter();
    DbConnection DatabaseConnection = new DatabaseConnection(/*put appropriate values here*/);
    XmlTextWriter myXmlTextWriter = new XmlTextWriter(/*put appropriate values here*/)

    myDataDapter.SelectCommand = DatabaseFactory.CreateCommand();
    myDataDapter.SelectCommand.CommandType = CommandType.StoredProcedure;
    myDataAdapter.CommentText = "EXEC MyStoredProc";
    myDataAdapter.SelectCommand.Connection = DatabaseConnection;
    myDataAdapter.Fill(myDataSet);
    myDataSet.WriteXml(myXmlWriter);
}
reader.Read()
reader.ReadOuterXml()
在同一个循环中会跳过一行。试试这个:

using (XmlReader reader = cmd.ExecuteXmlReader())
            {
               reader.Read(); //For initial first read.
               while (!reader.EOF)
                {

                    results.Root.Add(XElement.Parse(reader.ReadOuterXml()));
                    count += 1;

                }
            }
reader.Read()
reader.ReadOuterXml()
在同一个循环中会跳过一行。试试这个:

using (XmlReader reader = cmd.ExecuteXmlReader())
            {
               reader.Read(); //For initial first read.
               while (!reader.EOF)
                {

                    results.Root.Add(XElement.Parse(reader.ReadOuterXml()));
                    count += 1;

                }
            }

AbZy-你完全正确,你只是忘了在你的示例中将reader.Read()放在while循环之外-谢谢你的帮助:-)@fedor333你是对的,现在将这些加起来。欢迎您:)谢谢您接受。AbZy-您完全正确,您只是忘了将reader.Read()放在示例中的while循环之外-谢谢您的帮助:-)@fedor333您是对的,现在将这些加起来。不客气:)谢谢你的接受。