如何用c#中的另一个xml元素替换xml元素?
问题描述:
这是我的两个xml文档。如何用c#中的另一个xml元素替换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
到节点导入到当前文档。然后可以将导入的节点传递给方法。
你得到了什么确切的错误? –
而'一些错误'是....? – rene
错误消息有些像这样“newChild是从创建此节点的文档创建的不同文档创建的” – Saravanan