2013-01-17 46 views
0

序列化這有很多麻煩。非常新的XML中的serlializing序列化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> 

我沒有注意到anythign錯了我的班我的眼睛,但別人通知的東西,我做錯了添加此額外的元素。

回答

0

您需要將REQUESTaddr類中的字段addridField私有,而不是公共。 XMLSerializer將序列化所有public屬性和字段。

+0

呃...我正在尋找一些我做過的...謝謝你的新眼睛 – Jt2ouan

+0

或者如果你需要它的話,用'[System.Xml.Serialization.XmlIgnore]'屬性標記它公開 – Tobsey