簡體   English   中英

如何用C#中的另一個xml元素替換xml元素?

[英]how to replace xml elements with another xml elements in c#?

這是我的兩個xml文檔。

此xml存儲在paraouterXml字符串中。

<w:tbl>
 <w:tblPr>
 </w:tblPr>
 <w:tblGrid>
 </w:tblGrid>
</w:tbl>

此xml存儲在tblMetaInfo字符串中。

<root>
 <w:tblPr>
  <w:tblStyle w:val="TableGrid" /> 
  <w:tblW w:w="0" w:type="auto" /> 
  <w:tblLook w:val="04A0" /> 
  </w:tblPr>
 <w:tblGrid>
  <w:gridCol w:w="1947" /> 
  <w:gridCol w:w="1947" /> 
  </w:tblGrid>
</root>

所以,在這里我想更換paraouterXml的<w:tblPr>,<w:tblGrid>與tblMetaInfo的<w:tblPr>,<w:tblGrid>元素。

這是C#代碼...

XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(table.OuterXml);
XmlNode newNode = xDoc.DocumentElement;

XmlNodeList tblPrNode = xDoc.GetElementsByTagName("w:tblPr");
tblPrNode[0].RemoveAll();
XmlNodeList tblGridNode = xDoc.GetElementsByTagName("w:tblGrid");
tblGridNode[0].RemoveAll();

XmlDocument xDoc1 = new XmlDocument();
xDoc1.LoadXml(tblMetaInfo);
XmlNode newNode1 = xDoc1.DocumentElement;
XmlNodeList tblPrNode1 = xDoc1.GetElementsByTagName("w:tblPr");
XmlNodeList tblGridNode1 = xDoc1.GetElementsByTagName("w:tblGrid");

tblPrNode[0].ReplaceChild(tblPrNode1[0], tblPrNode[0]);
tblGridNode[0].ReplaceChild(tblGridNode1[0], tblGridNode[0]);

但這會引發一些錯誤...

請指導我擺脫這個問題...

ArgumentExceptionnewChild是從與創建此節點的文檔不同的文檔創建的

public XmlNode ReplaceChild(XmlNode newChild, XmlNode oldChild)

如果newChild是從另一個文檔創建的,則可以使用XmlDocument.ImportNode將節點導入到當前文檔中。 然后可以將導入的節點傳遞給ReplaceChild方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM