XML中的反斜杠从存储过程返回

时间:2012-11-07 16:23:43

标签: c# sql xml escaping

我编写了一个存储过程,它使用以下语法将我的行作为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;
}

我在这里弄错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

  

我在这里弄错了什么?

我怀疑你只是检查调试器中的字符串,它通常会转义字符串,就像你想把它写成C#字符串文字一样。

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