使用Linq To XML构建XML文档

时间:2010-05-05 03:55:12

标签: c# linq linq-to-xml

给出以下代码:

    string xml = "";
    //alternativley: string xml = "<people />";

    XDocument xDoc = null;

    if (!string.IsNullOrEmpty(xml))
    {
        xDoc = XDocument.Parse(xml);
        xDoc.Element("people").Add(
            new XElement("person", "p 1")
        );
    }
    else
    {
        xDoc = new XDocument();
        xDoc.Add(new XElement("people",
            new XElement("person", "p 1")
            ));
    }

正如您所看到的,如果xml变量为空,我需要手动创建rood节点,并将该节点附加到根节点,如果不是,我将简单地添加到people元素

我的问题是,有没有办法一般性地创建文档,如果它们尚不存在,它会自动添加所有引用的节点?

1 个答案:

答案 0 :(得分:1)

你的意思是XContainer.Element的版本添加一个元素,如果它还没有存在?不是我知道的......虽然我猜你可以写一个:

public static XElement FindOrAdd(this XContainer container, XName name)
{
    XElement ret = container.Element(name);
    if (ret == null)
    {
        ret = new XElement(name);
        container.Add(ret);
    }
    return ret;
}