0

我编写了一个存储过程,它使用以下语法将我的行作为 XML 返回:

FOR XML PATH ('customer'), ROOT ('customers'), TYPE

从 SSMS 中的存储过程运行查询会产生输出,单击时看起来很好。

但是,从 C# 调用该存储过程会给我 XML,我认为它具有被转义的双引号,因此:

<customers><customer id=\"123456\" firstName=\"ABE\" lastName=\"LINCOLN\" dob=\"02/12/1809\">

我的 C# 代码如下所示:

public string GetCustomerXML()
{
     string xml = string.Empty;
     XmlDocument xmlDoc = new XmlDocument();

     using (SqlConnection myConnection = new SqlConnection(connectionString))
     {
          myConnection.Open();

          using (SqlCommand cmd = new SqlCommand("GetData_CreateXML", myConnection))
          {
               cmd.CommandType = CommandType.StoredProcedure;

               using (XmlReader reader = cmd.ExecuteXmlReader())
               {
                   while (reader.Read())
                   {
                       xmlDoc.Load(reader);
                       xml = xmlDoc.OuterXml.ToString();
                   }
               }
           }
     }

     return xml;
}

我在这里做错了什么?

提前致谢。

4

1 回答 1

2

我在这里做错了什么?

我怀疑您只是在调试器中检查字符串,它通常会转义字符串,就好像您想将其写为 C# 字符串文字一样。

尝试记录字符串(例如,将其写入控制台这样简单的事情),我怀疑您会发现那些反斜杠根本不存在。

于 2012-11-07T16:26:39.557 回答