序列化添加额外元素的XML

本文关键字:XML 元素 添加 序列化 | 更新日期: 2023-09-27 17:54:12

序列化这个有很多麻烦。非常新的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;
    }

由于某些原因,它将它序列化为this带有一个我不想要的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>

我没有注意到我的类有什么问题,但其他人注意到我添加这个额外的元素做错了。

序列化添加额外元素的XML

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