由网友(今天与大家分享一些小众但高级感满满的,又好听又耐看,来挑一个)分享简介:我添加在文件的最后一个新的节点,但我得到一个写入错误:该文档已经有了一个DocumentElement节点。我的code:XmlDocument的文档=新的XmlDocument();doc.Load(目录);XmlNode的refElem = doc.LastChild; //最后一个节点的foreach(Mon...![如何将一份文件扫描到电脑后再修改](https://p.xsw88.cn/allimgs/daicuo/20230903/5168.png)
我添加在文件的最后一个新的节点,但我得到一个写入错误:
该文档已经有了一个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< /类>
< /进入>
< /项>
![如何将一份文件扫描到电脑后再修改](https://p.xsw88.cn/allimgs/daicuo/20230903/5168.png)
解决方案
您应该使用
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.
相关推荐
最新文章