Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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# OpenXML替换word文档的特定customxml部分_C#_Xml_Ms Word_Openxml - Fatal编程技术网

C# OpenXML替换word文档的特定customxml部分

C# OpenXML替换word文档的特定customxml部分,c#,xml,ms-word,openxml,C#,Xml,Ms Word,Openxml,我正在使用openxmlsdkver2操作一些word文档。文档目前有自定义的xml部分,我想做的是专门为这些部分替换xml 我知道我可以这样做来访问文档的customxml部分: Dim mainStream As New MemoryStream() Dim buffer As Byte() = File.ReadAllBytes(Server.MapPath("myfile.docx")) mainStream.Write(buffer, 0, buffer.Length) Try

我正在使用
openxmlsdkver2
操作一些word文档。文档目前有自定义的xml部分,我想做的是专门为这些部分替换xml

我知道我可以这样做来访问文档的customxml部分:

Dim mainStream As New MemoryStream()
Dim buffer As Byte() = File.ReadAllBytes(Server.MapPath("myfile.docx"))
mainStream.Write(buffer, 0, buffer.Length)

Try
  Using mainDocument As WordprocessingDocument = WordprocessingDocument.Open(mainStream, True)

  MainDocumentPart mainPart = mainDocument.MainDocumentPart;
  'collection of custom xml parts
   Dim parts = mainPart.CustomXmlParts
   For Each part As CustomXmlPart In parts
     'how do I replace the xml here??
   Next
但正如您所看到的,我不确定如何替换部件的XML。我的文档有两个XML部分,分别称为item1.XML和item2.XML。我想替换这些部分中的XML。我知道我可以使用.DeleteParts()删除现有的xml部分,也可以使用AddCustomXmlPart()创建新的部分,但我不想这样做。我只是想替换现有部分的XML

有人能建议我怎么做吗?任何建议都将不胜感激

多谢各位

编辑oops忘记了代码标签

使用
CustomXmlPart
实例的
FeedData()
方法替换 自定义XML部分的XML。
FeedData()
方法首先截断 零件流,然后将新数据写入零件流。 因此,可以使用此方法替换现有自定义XML部件中的XML

MainDocumentPart mainPart = mainDocument.MainDocumentPart;

Dim parts = mainPart.CustomXmlParts

For Each part As CustomXmlPart In parts

  Dim ms As New MemoryStream
  Dim xtw As New XmlTextWriter(ms, Encoding.UTF8)

  ' Create your xml.'

  xtw.WriteStartDocument() 
  xtw.WriteStartElement("bla")
  xtw.WriteEndElement()
  xtw.WriteEndDocument()
  xtw.Flush()

  ms.Seek(0, SeekOrigin.Begin)

  part.FeedData(ms) ' Replace old xml in part stream.'

  xtw.Close()    

Next