- PR -

XMLのhexBinary型の扱い方について

1
投稿者投稿内容
sky
会議室デビュー日: 2004/06/30
投稿数: 3
投稿日時: 2004-06-30 14:35
初めて投稿させて頂きます。

DataSet経由でXMLにアクセスしようとしていますが、
hexBinary型の要素の値を正しく取得することが出来ません。
以下のschemaとプログラムを使用してテストしています。

---------------XML Schema------------------
<?xml version="1.0" encoding="Shift_JIS" ?>
<xs:schema targetNamespace="http://hoge.com/test"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ts="http://hoge.com/test" elementFormDefault="qualified">
 <xs:element name="test1">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="node">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="HexValue" type="xs:hexBinary"></xs:element>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

-------------プログラムコード(C#)--------------
DataSet ds = new DataSet();
ds.ReadXmlSchema("c:\\schema\\test.xsd");
ds.ReadXml("c:\\document\\test.xml");
Byte[] b= (Byte[])ds.Tables["node"].Rows[0]["HexValue"]

例えばHexValue要素を"AAAA"としたXMLを読み込むと、
プログラム上の配列bはb[0]=0x0,b[1]=0x0,b[2]=0x0となってしまいます。
(base64デコードされている感じ)
ここではb[0]=0xAA,b[1]=0xAAとなることを期待しています。
対処法をご存知の方がいらっしゃいましたら、ご教授頂けないでしょうか。
よろしくお願い致します。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2004-06-30 15:52
hexBinaryはBase64でエンコードされているので、<HexValue>qqo=</HexValue>
とすれば、0xAA,0xAAがとれます。「qqo=」は以下のようにすれば出力されます。
コード:
byte[] by = {0xAA,0xAA};
Console.WriteLine(Convert.ToBase64String(by));

sky
会議室デビュー日: 2004/06/30
投稿数: 3
投稿日時: 2004-06-30 16:33
catsさん、返信ありがとうございます。

すみません、質問の方法がまずかったですね。。。
やりたいことは、HexValueに16進数を入力して、
プログラム上でその値を取得したかったんです。

引用:

catsさんの書き込み (2004-06-30 15:52) より:
hexBinaryはBase64でエンコードされているので、<HexValue>qqo=</HexValue>
とすれば、0xAA,0xAAがとれます。


私の中では、base64と解釈されるのはbase64Binary型で、hexBinary型は
16進数として解釈されるという認識だったんですが、その時点で間違って
しまっているでしょうか?
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2004-06-30 16:58
「hexBinaryはBase64エンコードされている」という私の発言は、
実際のコードで確認したものでした。
今、いろいろ調べてみると正しくは、16進で入っているべきもののようです。
もしかしたら、.net framework1.1のバグなんじゃないでしょうか。
sky
会議室デビュー日: 2004/06/30
投稿数: 3
投稿日時: 2004-07-01 11:23
確かに .net framework側の問題も考えられますね。
もう少し様子を見て、それでも埒があかないようでしたら
MSのサポートの利用も検討したいと思います。

ありがとうございました。
1

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