复制xml文件并在特定位置插入新元素-C#
嗨,我想复制一个xml文件并在一个特定的元素位置插入更多的元素; 做这件事最好最简单的方法是什么。我可以使用xmlReader读取元素,并针对每一种类型逐个编写—我对此有一些问题,但除此之外,我觉得这项工作太多,可以做得更好。 在下面的示例中,我将xml作为默认定义,需要以相同的格式创建一个新的xml,并将新值插入到sheet1中-但在现有行之后,并对sheet2执行相同的操作复制xml文件并在特定位置插入新元素-C#,c#,xml,xmldocument,xmlreader,xmlwriter,C#,Xml,Xmldocument,Xmlreader,Xmlwriter,嗨,我想复制一个xml文件并在一个特定的元素位置插入更多的元素; 做这件事最好最简单的方法是什么。我可以使用xmlReader读取元素,并针对每一种类型逐个编写—我对此有一些问题,但除此之外,我觉得这项工作太多,可以做得更好。 在下面的示例中,我将xml作为默认定义,需要以相同的格式创建一个新的xml,并将新值插入到sheet1中-但在现有行之后,并对sheet2执行相同的操作 <book> <Sheet ss:name="Sheet1"> <Ta
<book>
<Sheet ss:name="Sheet1">
<Table >
<Row >
<Cell/>
<Cell>
Title Name
</Cell>
<Cell >
Title Description
</Cell>
</Row>
</Sheet>
<a/>
<b/>
<Sheet ss:name="Sheet2">
<Table >
<Row >
<Cell/>
<Cell>
Title Name
</Cell>
<Cell >
Title Description
</Cell>
</Row>
</Sheet>
</book>
书名
标题说明
书名
标题说明
在我看来,最简单的方法是使用LINQ to XML加载整个文档,修改它,然后再次保存。这可能比使用XmlReader
更容易,根据我的经验,这可能会有点麻烦
然而,这确实涉及到将其全部加载到内存中——如果文档很大,这可能是一个问题。这可能是个问题吗
编辑:以下是LINQ to XML(未测试)中的一个简短示例:
如果您只想在图纸的所有旧内容之后添加新内容,则可以选择最后一部分:
sheet1.Add(new XElement("Foo", "Extra value"));
看起来是这样,原始的xmlFormat文件并没有那么大,而最终结果可能包含几MB。有关于如何使用linq执行此操作的任何链接/示例。我需要在找到元素之前获取所有数据(示例中为shhet),将其复制到新xml中,插入新数据,并在所需元素之后复制所有数据。谢谢你的帮助!!!另外,xmlReader和linq to xml的优缺点比较在这种情况下,如果要将整个内容读入内存,则不需要进行任何复制:只需适当修改树,然后保存。LINQtoXMLoverXMLReader的好处是代码将简单得多。缺点是,所有数据都将存储在内存中。几MB应该不是什么问题。我会写一个你可能会做的小例子。谢谢,谢谢。我应该关注多大的文件?@user271077:这取决于你的具体情况。基本上,你能负担得起记忆中的一切吗?您必须进行实验,看看文件的大小占用了多少内存。谢谢,这里有一条评论:当获取namespcae时,应该使用XNamespace ss=XNameSpcae.Get(“);直接启动对我来说不起作用
sheet1.Add(new XElement("Foo", "Extra value"));