[英]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]);
但這會引發一些錯誤...
請指導我擺脫這個問題...
ArgumentException
: newChild是從與創建此節點的文檔不同的文檔創建的 。
public XmlNode ReplaceChild(XmlNode newChild, XmlNode oldChild)
:
如果newChild是從另一個文檔創建的,則可以使用
XmlDocument.ImportNode
將節點導入到當前文檔中。 然后可以將導入的節點傳遞給ReplaceChild
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.