分割字符串并保存为xml

本文关键字:xml 保存 串并 字符 字符串 分割 | 更新日期: 2023-09-27 18:06:15

在文本框中你可以输入字符串(数字),像这样:78787.88888777.99999

和值必须这样保存:

<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();
        }

但每次都是"

,这是属性:

 [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>

谢谢

分割字符串并保存为xml

您创建了ipaddresses节点,但是您直接在设置下添加了ipaddress注释。因此,如果您先将节点添加到ipaddresses,然后将该节点添加到parent,它应该可以工作。像这样:

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);