【问题标题】:xml Serialization and Deserialization (hide one node header)xml序列化和反序列化(隐藏一个节点头)
【发布时间】:2013-02-12 22:39:55
【问题描述】:

我有一个 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>

【问题讨论】:

    标签: c# xml serialization


    【解决方案1】:

    这应该可以,但是很冗长。如果不起作用,请先在 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);}
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 2011-08-14
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      相关资源
      最近更新 更多