- PR -

バイナリデータを含むDataSet → Xml → 文字列取得

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2004-09-29 09:55
こんにちは
ASP.NET 言語[C#]、DB[SQLServer2000]で開発しています。

varbinary型のフィールドNAMEを持つT_名簿という
テーブルがあり、「山田 太郎」というデータが入っています。

データを抽出してDataSetに格納して、まずXMLに変換し、
そのXMLから文字列「山田 太郎」を取得したいのですが、
思うようにいきません。
ソースを以下に記します。
よろしくお願いします。

//DataSet→Xml文字列化
SqlConnection con = new SqlConnection(DB接続文字列);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("SELECT * FROM T_名簿", con);

DataSet ds = new DataSet();
da.Fill(ds, "T_名簿");

string data = ds.GetXml();

//Xml→文字列取得
XmlDocument xml = new XmlDocument();
xml.LoadXml(data);
XmlNodeList NodeList = xml.GetElementsByTagName("NAME");

XmlNode rec = xml.SelectSingleNode("/NewDataSet/T_名簿");

string NAME = rec.SelectSingleNode("NAME[1]").InnerText;
//↑NAMEの値は「jlKTY4FAkb6YWQ・・・」になっています。
//文字列に変換する方法を教えて下さい。


chack
常連さん
会議室デビュー日: 2002/11/18
投稿数: 48
お住まい・勤務地: 埼玉県
投稿日時: 2004-09-29 10:50
XMLにした時点でバイナリデータは base 64 でエンコードされていると思います。

string NAME = rec.SelectSingleNode("NAME[1]").InnerText;
byte[] binaryData = System.Convert.FromBase64String(NAME);

ではどうでしょうか?(こちらでは試してませんが・・・)
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2004-09-29 11:37
chack様
すばやい返答ありがとうございます。
投稿したソースの後に以下のコードを追加したところ、上手くいきました。

System.Text.Encoding uni = System.Text.Encoding.GetEncoding("unicode");
Byte[] b = System.Convert.FromBase64String(NAME);
string NAME2 = uni.GetString(b);

ありがとうございました。
今後ともよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)