- - PR -
XMLのhexBinary型の扱い方について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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となることを期待しています。 対処法をご存知の方がいらっしゃいましたら、ご教授頂けないでしょうか。 よろしくお願い致します。 | ||||
|
投稿日時: 2004-06-30 15:52
hexBinaryはBase64でエンコードされているので、<HexValue>qqo=</HexValue>
とすれば、0xAA,0xAAがとれます。「qqo=」は以下のようにすれば出力されます。
| ||||
|
投稿日時: 2004-06-30 16:33
catsさん、返信ありがとうございます。
すみません、質問の方法がまずかったですね。。。 やりたいことは、HexValueに16進数を入力して、 プログラム上でその値を取得したかったんです。
私の中では、base64と解釈されるのはbase64Binary型で、hexBinary型は 16進数として解釈されるという認識だったんですが、その時点で間違って しまっているでしょうか? | ||||
|
投稿日時: 2004-06-30 16:58
「hexBinaryはBase64エンコードされている」という私の発言は、
実際のコードで確認したものでした。 今、いろいろ調べてみると正しくは、16進で入っているべきもののようです。 もしかしたら、.net framework1.1のバグなんじゃないでしょうか。 | ||||
|
投稿日時: 2004-07-01 11:23
確かに .net framework側の問題も考えられますね。
もう少し様子を見て、それでも埒があかないようでしたら MSのサポートの利用も検討したいと思います。 ありがとうございました。 |
1