1

XML ファイルがあり、逆シリアル化する必要があります。すべてのノードをバイパスせずに、XML ファイルをオブジェクトにデシリアライズするだけです。

結果 ActionGetSiteResultData から隠すことは可能ですか、またはカスタムのシリアライゼーション/デシリアライゼーションを使用する方法は 1 つだけですか?

クラス:

// root
public Result Result { get; set; }
// rows
public class Result 
{
  public List<ResultData> Data { get; set; }
}
//item
public class ResultData
{
  [XmlElement(ElementName = "gen_info")]
  public GenInfo GenInfo { get; set; }

  [XmlElement(ElementName = "hosting")]
   public Hosting Hosting { get; set; }
}

結果:

  <Result>
    <Id>1</Id>
    <Data>
          <ResultData> <--- REMOVE THIS
             <gen_info>
                <ascii-name>sadsad</ascii-name>
              </gen_info>
              <hosting/>
          </ResultData> <--- REMOVE THIS
    </Data>
  </Result>

必要:

<Result>
    <Id>1</Id>
    <Data>
        <gen_info>
            <ascii-name>sadsad</ascii-name>
         </gen_info>
         <hosting/>
    </Data>
  </Result>
<Result>
 <Id>2</Id>
 <Data>
   <gen_info>
      <ascii-name>sadsad2</ascii-name>
    </gen_info>
    <hosting/>
  </Data>
 </Result>
4

1 に答える 1

0

これは行う必要がありますが、冗長です。[XmlElement(ElementName = "gen_info")] が機能しない場合は、最初に ResultData プロパティで試してください。

public class Result 
{
  [XmlIgnore]
  public List<ResultData> Data { get; set; }

  [XmlElement(ElementName = "gen_info")]
  public ResultData[] __XmlSerializedData{
    get{ return Data.ToArray();}
    set{ Data = new List<ResultData>(value);}
  }
}
于 2013-02-12T23:01:28.330 に答える