xml序列化和反序列化(隐藏一个节点头)

本文关键字:一个 节点 隐藏 序列化 反序列化 xml | 更新日期: 2023-09-27 17:58:48

我有一个XML文件,需要对它进行反序列化。在不绕过所有节点的情况下,只需将XML文件反序列化为对象即可。

是否可以从结果ActionGetSiteResultData中隐藏,或者只隐藏一种方法使用自定义序列化/反序列化?

类别:

// 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>

xml序列化和反序列化(隐藏一个节点头)

这应该做,但很冗长。如果不起作用,请首先在ResultData属性上尝试[XmlElement(ElementName="gen_info")]:

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);}
  }
}