这份文件已经有一个“DocumentElement”节点这份、节点、有一个、文件

由网友(今天与大家分享一些小众但高级感满满的,又好听又耐看,来挑一个)分享简介:我添加在文件的最后一个新的节点,但我得到一个写入错误:该文档已经有了一个DocumentElement节点。我的code:XmlDocument的文档=新的XmlDocument();doc.Load(目录);XmlNode的refElem = doc.LastChild; //最后一个节点的foreach(Mon...

我添加在文件的最后一个新的节点,但我得到一个写入错误:

  

该文档已经有了一个DocumentElement节点。

我的code:

  XmlDocument的文档=新的XmlDocument();
doc.Load(目录);
XmlNode的refElem = doc.LastChild; //最后一个节点

的foreach(MoneyEnter myList上的列表)
{
    的XmlElement entryElement = doc.CreateElement(输入);
    entryElement.SetAttribute(类型,myList.TypeAmount);

    的XmlElement amountElement = doc.CreateElement(额);
    amountElement.InnerText = Convert.ToString(myList.Amount);

    的XmlElement dateElement = doc.CreateElement(日);
    dateElement.InnerText = Convert.ToString(myList.Date);

    的XmlElement descriptionElement = doc.CreateElement(说明);
    XmlCDataSection cdataDescription = doc.CreateCDataSection(myList.Description);
    descriptionElement.AppendChild(cdataDescription);

    的XmlElement categoryElement = doc.CreateElement(类);
    categoryElement.InnerText = myList.Category;

    entryElement.AppendChild(amountElement);
    entryElement.AppendChild(dateElement);
    entryElement.AppendChild(descriptionElement);
    entryElement.AppendChild(categoryElement);
    doc.InsertAfter(entryElement,refElem); //在文件的最后添加新节点
}
doc.Save(目录);
 

我的XML文件:

 < XML版本=1.0编码=UTF-8&GT?;
<条目>
    <条目类型=借记>
        &其中;量> 5℃/量GT;
        <日期> 01.01.0001起0:00:00< /日期>
        <描述> ffvfd< /描述>
        <类别> fdvfvf< /类>
    < /进入>
    <条目类型=借记>
        &其中;量> 5℃/量GT;
        <日期> 01.01.0001起0:00:00< /日期>
        <描述> fvfv< /描述>
        <类别> fvfdvfd< /类>
    < /进入>
    <条目类型=借记>
        &其中;量> 5℃/量GT;
        <日期> 01.01.0001起0:00:00< /日期>
        <描述> FV GFV< /描述>
        <类别> dscdcd< /类>
    < /进入>
    <条目类型=借记>
        &其中;量> 5℃/量GT;
        <日期> 01.01.0001起0:00:00< /日期>
        <描述> vfvfv< /描述>
        <类别> cfcfc< /类>
    < /进入>
    <条目类型=借记>
        &其中;量大于7&所述; /量GT;
        <日期> 01.01.0001起0:00:00< /日期>
        <描述> gfbvgv< /描述>
        <类别> gfbgfb< /类>
    < /进入>
< /项>
 
如何将一份文件扫描到电脑后再修改

解决方案

您应该使用

  XmlNode的refElem = doc.DocumentElement.LastChild;
 

  doc.DocumentElement.InsertAfter(entryElement,refElem);
 

修改

您也可以使用

  doc.DocumentElement.AppendChild(entryElement);
 

在这种情况下, refElem 是不需要的。

I'm adding a new node at the end of a file, but I get a write error:

This document already has a 'DocumentElement' node.

My code:

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);

My XML file:

<?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>

解决方案

You should use

XmlNode refElem = doc.DocumentElement.LastChild;

and

doc.DocumentElement.InsertAfter(entryElement, refElem);

EDIT

You may also use

doc.DocumentElement.AppendChild(entryElement);

In this case refElem is not needed.

阅读全文

相关推荐

最新文章