我编写了一个存储过程,它使用以下语法将我的行作为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;
}
我在这里弄错了什么?
提前致谢。
答案 0 :(得分:2)
我在这里弄错了什么?
我怀疑你只是检查调试器中的字符串,它通常会转义字符串,就像你想把它写成C#字符串文字一样。
尝试记录字符串(例如将其写入控制台一样简单),我怀疑你会发现那些反斜杠根本不存在。