分割字符串并保存为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>
谢谢
您创建了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);