在特定标签内插入元素

时间:2010-07-20 18:05:19

标签: c# xml insert linq-to-xml

我正在尝试在文件中的特定点插入元素,然后将该文件保存。但是,我似乎无法做到正确。我的XML布局是这样的:

<?xml version="1.0" encoding="utf-8"?>
<Settings>
   <Items />
   <Users />
</Settings>

这是我目前的代码:

            XDocument xd = XDocument.Load(@"C:\test.xml");

            var newPosition =  xdoc.Root.Elements("Users");
            //I've tried messing around with newPosition methods


            XElement newItem = new XElement("User",
                new XAttribute("Name", "Test Name"),
                new XAttribute("Age", "34"),

                ); 

            //how can I insert 'newItem' into the "Users" element tag in the XML file?

            xd.Save(new StreamWriter(@"C:\test.xml"));

我想使用Linq to XML将'newItem'插入到标记中。感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

只需找到Users元素,然后附加它:

// Note that it's singular - you only want to find one
XElement newPosition = xdoc.Root.Element("User");
XElement newItem = new XElement("User",
     new XAttribute("Name", "Test Name"),
     new XAttribute("Age", "34"));

// Add the new item to the collection of children
newPosition.Add(newItem);

您在此使用var导致您误入歧途 - 因为您的代码中的newPosition类型确实是IEnumerable<XElement> ...您找到所有 User个元素。 (好吧,实际上只有 一个元素,但那是无关紧要的...它在概念上仍然是一个序列。)