2015-08-03 98 views
0

在一個文本框,你可以輸入字符串(數字),像這樣: 78787.8888 8777.99999分割字符串,並保存爲XML

和值必須被保存這樣的:

<ipaddresses> 
<ipaddress>78787.8888 </ipaddress> 
<ipaddress>8777.99999 </ipaddress> 
</ipaddresses> 

我使用這種序列化方法,像這樣:

internal string Serialize(EditProductModel model) { 
      if (this.ResidentsOnly == false && this.MinimumAge == 0) 
       return model.Product.AuthenticationSettings; 

      XElement settings = XElement.Parse(model.Product.AuthenticationSettings ?? "<settings/>"); 
      if (settings == null || settings.Attribute("authenticationrequired") == null || settings.Attribute("authenticationrequired").Value != "true") 
       return model.Product.AuthenticationSettings; 

      settings.Add( 
       new XElement("preconditions", 
        new XElement("residentsonly", this.ResidentsOnly ? "1" : "0"), 
        new XElement("minimumage", this.MinimumAge), 
        new XElement("redirecturl", this.RedirectUrl), 
        new XElement("ipaddress", this.IpAddress) 
       ) 
      ); 


      XElement ipaddresses = new XElement("ipaddresses"); 
      string[] lines = ipaddresses.Value.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
      foreach (var item in lines) { 
       lines.Select(ip=> new XElement("item", ip)).ToString(); 

      } 




      settings.Add(ipaddresses); 


      return settings.ToString(); 
     } 

但是每次行都是「」。

,這是propertie:

[Display(Name = "PreConditionIpAddress", ResourceType = typeof(Resources.Entity.Product))] 
     public string[] IpAddress { get; set; } 

謝謝。

奧凱,我現在有這樣的:

XElement ipaddresses = new XElement("ipaddresses"); 
      string[] lines = IpAddress.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 
      foreach (var item in lines) { 

       // lines.Select(ip => new XElement("ipaddress", ip)).ToString(); 
       settings.Add(new XElement("ipaddress", item)); 

      } 

,我也得到:

<ipaddress>78787.8888 </ipaddress> 
<ipaddress>8777.99999 </ipaddress> 

但如何得到這樣的:

<ipaddresses> 
<ipaddress>78787.8888 </ipaddress> 
<ipaddress>8777.99999 </ipaddress> 
</ipaddresses> 

謝謝

+4

步驟槽它在一個調試器,ITLL迅速告訴你是哪裏的問題 –

+0

存儲在'ipaddresses'價值在哪裏?你需要傳遞給'XElement'的構造函數 –

+0

Hi Ned。我改變了帖子。我添加了屬性 – InfinityGoesAround

回答

1

您創建了ipaddresses節點,但您直接在設置下添加ipaddress筆記。因此,如果您首先將節點添加到ipaddresses,那麼將該節點添加到父級應該可以工作。事情是這樣的:

XElement ipaddresses = new XElement("ipaddresses"); 
string[] lines = IpAddress.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 
foreach (var item in lines) 
{ 
    ipaddresses.Add(new XElement("ipaddress", item)); 
} 

settings.Add(ipaddresses); 
+0

@ Volkan.Thank你! – InfinityGoesAround