4

複数のネストされていない値を持つ配列にシリアル化する必要があります。

 <MyArray>
    <Code>code1</Code>
    <Name>name associated with code 1</Name>
    <Code>code2</Code>
    <Name>name associated with code 2</Name>
    <Code>code3</Code>
    <Name>name associated with code 3</Name>
    <Code>code4</Code>
    <Name>name associated with code 4</Name>
  </MyArray>

配列でさまざまな属性を試しました-たとえば

[XmlArray(ElementName="MyArray")]        
[XmlArrayItem(ElementName="")]        
public List<MyPair> MyPairs { get; set; }

注意: MyPair オブジェクトには 2 つの文字列プロパティ (コードと名前) が含まれています。

しかし、無駄に、私は常に各ペアの包含要素を取得します(通常はより良いですが、スキーマが要求するものではなく、制御できません)。どんな助けでも大歓迎です。

編集これは巨大なxmlドキュメントの一部です.XElementの手動シリアル化をその一部に使用し、XMLSerializationを残りに使用することは可能ですか?

4

2 に答える 2

3

アイテムを手動でシリアル化する以外に方法はありません。

XElement xElem = new XElement("MyArray", 
                               array.Select(m => new XElement[] { 
                                               new XElement("Code", m.Code), 
                                               new XElement("Name", m.Name) })
                              );
var xml = xElem.ToString();
于 2012-11-08T08:54:54.227 に答える
0

これを閉じるだけです。オブジェクトグラフ全体を手動でシリアル化することを避けたかったので、ちょっとしたハックと呼べるものがあると思います。そう:

  • xml シリアライゼーションを使用して文字列にシリアライズしました
  • 文字列を操作して、問題のある余分なネストされた要素を削除しました
  • 解析された xml 文字列全体を単一の XElement に変換 (これを WCF の xml として正しくシリアル化できるようにするために必要)
于 2012-11-09T11:24:52.193 に答える