用另一个xml替换元素c#

时间:2015-09-14 12:43:55

标签: c# xml

我有以下部分的xml:

<root>
    <notesbydate>
        <notedate date="1996-12-06T00:00:00">
            <note>
                <notedate>asdasd</notedate>
            </note>
        </notedate>
        <notedate date="1996-12-06T00:00:00">
            <note>
                <notedate>asdasd</notedate>
            </note>
        </notedate>
    </notesbydate>
</root>

我想要做的是将notesbydate元素替换为另一个名为ndates的元素。我试过这个:

 XElement test = xDoc.Element("notesbydate");
            test.ReplaceWith(
                new XElement("NewChild")
            );

但是我这样做只会出错...有谁可以解释应该做什么?

我收到此错误消息:

  

xmlParser.exe中发生了未处理的“System.NullReferenceException”类型异常       附加信息:对象引用未设置为对象的实例。

2 个答案:

答案 0 :(得分:1)

这应该在根元素下方起作用:

XElement test = xDoc.Root.Element("notesbydate");
test.ReplaceWith(
                    new XElement("NewChild")
                );

或者你可以使用

XElement test = xDoc.Element("root").Element("notesbydate");

并重命名元素:

test.Name = "NewChild";

答案 1 :(得分:0)

你忘记写函数而不是元素。请参阅以下代码:

class Program
{
    static void Main(string[] args)
    {
        string xml = @"<root>
                        <notesbydate>
                           <notedate date=""1996 - 12 - 06T00: 00:00"">
                                  <note>
                                       <notedate> asdasd </notedate>
                                  </note>
                                 </notedate>
                              <notedate date = ""1996-12-06T00:00:00"">
                                   <note>
                                        <notedate> asdasd </notedate>
                                   </note>
                                </notedate>
                              </notesbydate>
                       </root>";

        var xDoc = XElement.Parse(xml);
        XElement test = xDoc.Element("notesbydate");
        xDoc.Element("notesbydate").Name = "YourNewName";           
        Console.ReadKey();
    }
}

Here是更多详情