Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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
复制xml文件并在特定位置插入新元素-C#_C#_Xml_Xmldocument_Xmlreader_Xmlwriter - Fatal编程技术网

复制xml文件并在特定位置插入新元素-C#

复制xml文件并在特定位置插入新元素-C#,c#,xml,xmldocument,xmlreader,xmlwriter,C#,Xml,Xmldocument,Xmlreader,Xmlwriter,嗨,我想复制一个xml文件并在一个特定的元素位置插入更多的元素; 做这件事最好最简单的方法是什么。我可以使用xmlReader读取元素,并针对每一种类型逐个编写—我对此有一些问题,但除此之外,我觉得这项工作太多,可以做得更好。 在下面的示例中,我将xml作为默认定义,需要以相同的格式创建一个新的xml,并将新值插入到sheet1中-但在现有行之后,并对sheet2执行相同的操作 <book> <Sheet ss:name="Sheet1"> <Ta

嗨,我想复制一个xml文件并在一个特定的元素位置插入更多的元素; 做这件事最好最简单的方法是什么。我可以使用xmlReader读取元素,并针对每一种类型逐个编写—我对此有一些问题,但除此之外,我觉得这项工作太多,可以做得更好。 在下面的示例中,我将xml作为默认定义,需要以相同的格式创建一个新的xml,并将新值插入到sheet1中-但在现有行之后,并对sheet2执行相同的操作

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