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 に答える