【问题标题】:Serialize XML adding extra element序列化 XML 添加额外元素
【发布时间】:2013-01-25 09:00:21
【问题描述】:

序列化这个有很多麻烦。在 XML 中序列化非常新

这是我写入序列化数据类的地方。

    string addrID="Sante Fe, New Mexico";
              INPUT r = new INPUT();
              INPUTLOG ls = new INPUTLOG();
              ls.id = id;
              ls.password = password;
              r.LOGIN = ls;
              REQUESTaddr l = new REQUESTaddr();
              l.loan_id = addrID;
              INPUTLOGINREQ r = new INPUTLOGINREQ();
              r.LOAN = l;
              loan.REQUEST = r;

              string serializedSearch = doSerializationsearch(r);   

private static string doSerializationsearch(INPUT r)
    {
        string serializedValue = string.Empty;


            XmlSerializer xmlSerializer = new XmlSerializer(r.GetType());
            using (MemoryStream ms = new MemoryStream())
            {
                xmlSerializer.Serialize(ms, r);

                ms.Position = 0;
                var sr = new StreamReader(ms);
                serializedValue = sr.ReadToEnd();
            }


            serializedValue = serializedValue.Replace("version=\"0\"", string.Empty).Replace("<?xml version=\"1.0\"?>", string.Empty).Replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", string.Empty);


        return serializedValue;
    }

由于某种原因,它使用我不想要的 addridfield 元素将其序列化。

<INPUT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">    
  <LOGIN api_user_id="user" api_password="password" />   
    <REQUEST>      
      <Address addr_id="53196d9f4c544e4da9f647b2c86444c2">       
      <addridField>53196d9f4c544e4da9f647b2c86444c2</addridField>  <<<<<I do not want this
      </Address>    
   </REQUEST> 
 </INPUT>

我没有注意到我的课程有任何问题,但其他人注意到我在添加这个额外元素时做错了。

【问题讨论】:

    标签: c# xml serialization


    【解决方案1】:

    您需要将REQUESTaddr 类中的字段addridField 设为私有,而不是公开。 XMLSerializer 将序列化所有 public 属性和字段。

    【讨论】:

    • 呃...我一直在寻找我所做的事情...感谢您的新眼睛
    • 如果您需要公开,也可以使用[System.Xml.Serialization.XmlIgnore]attribute 标记它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多