C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: XMLの要素をDeserializeで配列にしたい。


(過去ログ 30 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■14217 / inTopicNo.1)  XMLの要素をDeserializeで配列にしたい。
  
□投稿者/ かぁとぅ (1回)-(2008/02/13(Wed) 14:35:19)

分類:[.NET 全般] 

XmlSerializerについての質問です。

1のようなXMLがあり、2のクラスにDesirializeメソッドを使って値を格納したいと考えています。
chumon要素の配列を取得したいのですが、データが入ってくれず悩んでいます。

現状、ルート要素のchumonListResponseとchumonListItemには値が入っているのですが、
chumon要素の配列には値が入ってくれません(Length==0)
どなたか2のクラスのどこが間違っているか教えていただけませんでしょうか?
よろしくお願いします。

1.XML
<?xml version="1.0" encoding="UTF-8" ?>
<chumonListResponse>
  <chumonList>
    <chumonListItem>
      <chumonType>6</chumonType>
      <chumon chumonBango="001">
        <hatchuSuryo>10000</hatchuSuryo>
        <hatchuNichiji>2007-05-30 13:17:00</hatchuNichiji>
        <yukoNichiji />
      </chumon>
      <chumon chumonBango="002">
        <hatchuSuryo>10000</hatchuSuryo>
        <hatchuNichiji>2007-05-30 13:17:00</hatchuNichiji>
        <yukoNichiji />
      </chumon>
      <chumon chumonBango="003">
        <hatchuSuryo>10000</hatchuSuryo>
        <hatchuNichiji>2007-05-30 13:17:00</hatchuNichiji>
        <yukoNichiji />
      </chumon>
    </chumonListItem>
  </chumonList>
  <message>発注一覧を取得しました。</message>
</chumonListResponse>


2.格納用クラス

    public class chumonListResponse 
    {
        public string message;
        [XmlArray("chumonList")]
        [XmlArrayItem("chumonListItem", typeof(chumonListItem))]
        public chumonListItem[] chumonListItem;
    }

    public class chumonListItem
    {
        public string chumonType;
        [XmlArrayItem("chumon", typeof(chumon))]         //←ここがどう設定すればよいかわからない。。。
        public chumon[] chumon;
    }

    public class chumon
    {
        [XmlAttributeAttribute()]
        public string chumonBango;
        public string hatchuSuryo;
        public string hatchuNichiji;
        public string yukoNichiji;
    }


ウォッチで下記の値を確認すると0となってしまいます。
msgChumonListResponse.chumonListItem[0].chumon.Length

引用返信 編集キー/
■14219 / inTopicNo.2)  Re[1]: XMLの要素をDeserializeで配列にしたい。
□投稿者/ Hongliang (239回)-(2008/02/13(Wed) 15:59:44)
自身直下の要素は XmlArrayItem 属性じゃなくて XmlElement 属性を指定してください。

該当 xml ファイルの XML Schema を書いて xsd.exe でクラス化すると XmlSerializer に使用する属性の使い方が結構分かりますよ。余計なのも付いてきますけど。
引用返信 編集キー/
■14224 / inTopicNo.3)  Re[2]: XMLの要素をDeserializeで配列にしたい。
□投稿者/ かぁとぅ (2回)-(2008/02/13(Wed) 16:29:09)
No14219 (Hongliang さん) に返信
> 自身直下の要素は XmlArrayItem 属性じゃなくて XmlElement 属性を指定してください。
>
> 該当 xml ファイルの XML Schema を書いて xsd.exe でクラス化すると XmlSerializer に使用する属性の使い方が結構分かりますよ。余計なのも付いてきますけど。


Hongliang さん ありがとうございました!おっしゃる通りにやって解決しました。

シリアライズ処理に慣れていなくて、困っていたところだったので大変たすかりました。

実は調べていてxsd.exeを利用すると xml→xsd→csって感じでできるっていうことを知って
試してみていたのですが、正直属性が多くてあまりわからなくて・・・orz 勉強します。

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

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -