不如这样做:
public XDocument CreateXDocument(string path, string value)
{
var parts = path.Split(new [] { '/', },
StringSplitOptions.RemoveEmptyEntries);
return new XDocument(this.CreateXElement(parts, value));
}
private XElement CreateXElement(IEnumerable<string> parts, string value)
{
var content = parts.Count() == 1 ?
(object)value :
(object)this.CreateXElement(parts.Skip(1), value);
return new XElement(parts.First(), content);
}
var xd = this.CreateXDocument("/Alert/Source/DetectTime", "12:03:2010 12:22:21");
Console.WriteLine(xd.ToString());
将产生:
<Alert>
<Source>
<DetectTime>12:03:2010 12:22:21</DetectTime>
</Source>
</Alert>
我想我可以发布
CreateXElement
private XElement CreateXElement(IEnumerable<string> parts, string value)
{
var head = parts.First();
var tail = parts.Skip(1);
var content = tail.Any() ?
(object)this.CreateXElement(tail, value) :
(object)value;
return new XElement(head, content);
}