C# 添加额外元素序列化XML

C# 添加额外元素序列化XML,c#,xml,serialization,C#,Xml,Serialization,连载这个有很多困难。XML中的Serliazing非常新 这里是我编写序列化数据类的地方 string addrID="Sante Fe, New Mexico"; INPUT r = new INPUT(); INPUTLOG ls = new INPUTLOG(); ls.id = id; ls.password = password; r.LO

连载这个有很多困难。XML中的Serliazing非常新

这里是我编写序列化数据类的地方

    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;
    }
string addrID=“Sante Fe,新墨西哥州”;
输入r=新输入();
INPUTLOG ls=新的INPUTLOG();
ls.id=id;
ls.password=密码;
r、 登录=ls;
REQUESTaddr l=新的REQUESTaddr();
l、 loan_id=addrID;
INPUTLOGINREQ r=新的INPUTLOGINREQ();
r、 贷款=l;
loan.REQUEST=r;
字符串serializedSearch=doSerializationsearch(r);
私有静态字符串doSerializationsearch(输入r)
{
string serializedValue=string.Empty;
XmlSerializer XmlSerializer=新的XmlSerializer(r.GetType());
使用(MemoryStream ms=new MemoryStream())
{
serializer.Serialize(ms,r);
ms.Position=0;
var sr=新的StreamReader(毫秒);
serializedValue=sr.ReadToEnd();
}
serializedValue=serializedValue.Replace(“版本=\“0\”,string.Empty)。Replace(“,string.Empty)。Replace(“,string.Empty”);
返回序列化值;
}
出于某种原因,它使用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>


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

呃…我想了解一下我所做的事情…感谢你的新眼光,或者如果你需要它是公共的,用
[System.Xml.Serialization.XmlIgnore]
属性标记它