我有以下部分的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”类型异常 附加信息:对象引用未设置为对象的实例。
答案 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是更多详情