Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 此文档已经有一个';DocumentElement';节点_C#_.net_Xml - Fatal编程技术网

C# 此文档已经有一个';DocumentElement';节点

C# 此文档已经有一个';DocumentElement';节点,c#,.net,xml,C#,.net,Xml,我正在文件末尾添加一个新节点,但出现写入错误: 此文档已具有“DocumentElement”节点 我的代码: XmlDocument doc = new XmlDocument(); doc.Load(directory); XmlNode refElem = doc.LastChild; // Last node foreach (MoneyEnter myList in list) { XmlElement entryElement = doc.CreateElement("en

我正在文件末尾添加一个新节点,但出现写入错误:

此文档已具有“DocumentElement”节点

我的代码:

XmlDocument doc = new XmlDocument();
doc.Load(directory);
XmlNode refElem = doc.LastChild; // Last node

foreach (MoneyEnter myList in list)
{
    XmlElement entryElement = doc.CreateElement("entry");
    entryElement.SetAttribute("type", myList.TypeAmount);

    XmlElement amountElement = doc.CreateElement("amount");
    amountElement.InnerText = Convert.ToString(myList.Amount);

    XmlElement dateElement = doc.CreateElement("date");
    dateElement.InnerText = Convert.ToString(myList.Date);

    XmlElement descriptionElement = doc.CreateElement("description");
    XmlCDataSection cdataDescription = doc.CreateCDataSection(myList.Description);
    descriptionElement.AppendChild(cdataDescription);

    XmlElement categoryElement = doc.CreateElement("category");
    categoryElement.InnerText = myList.Category;

    entryElement.AppendChild(amountElement);
    entryElement.AppendChild(dateElement);
    entryElement.AppendChild(descriptionElement);
    entryElement.AppendChild(categoryElement);
    doc.InsertAfter(entryElement, refElem); //add new node in end of file
}
doc.Save(directory);
我的XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<entries>
    <entry type="debit">
        <amount>5</amount>
        <date>01.01.0001 0:00:00</date>
        <description>ffvfd</description>
        <category>fdvfvf</category>
    </entry>
    <entry type="debit">
        <amount>5</amount>
        <date>01.01.0001 0:00:00</date>
        <description>fvfv</description>
        <category>fvfdvfd</category>
    </entry>
    <entry type="debit">
        <amount>5</amount>
        <date>01.01.0001 0:00:00</date>
        <description>fv gfv</description>
        <category>dscdcd</category>
    </entry>
    <entry type="debit">
        <amount>5</amount>
        <date>01.01.0001 0:00:00</date>
        <description>vfvfv</description>
        <category>cfcfc</category>
    </entry>
    <entry type="debit">
        <amount>7</amount>
        <date>01.01.0001 0:00:00</date>
        <description>gfbvgv</description>
        <category>gfbgfb</category>
    </entry>
</entries>

5.
01.01.0001 0:00:00
ffvfd
FDVF
5.
01.01.0001 0:00:00
fvfv
FVFD
5.
01.01.0001 0:00:00
fv-gfv
dscdcd
5.
01.01.0001 0:00:00
VFV
氟氯化碳
7.
01.01.0001 0:00:00
gfbvgv
gfbgfb
您应该使用

XmlNode refElem = doc.DocumentElement.LastChild;

编辑

您也可以使用

doc.DocumentElement.AppendChild(entryElement);

在这种情况下,不需要
refElem

谢谢,可以工作,但是可以在文件末尾添加一个新节点,为什么不呢?您也可以使用
doc.DocumentElement.AppendChild(entryElement)
,而不需要引用的元素。因为插入第一个新节点后,refElem不再是最后一个子节点。然后您需要编写
doc.DocumentElement.InsertAfter(entryElement,doc.DocumentElement.LastChild)
,在当前最后一个子元素之后插入。
doc.DocumentElement.AppendChild(entryElement);