0

这是我的两个 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>

所以,在这里我想<w:tblPr>,<w:tblGrid>用 tblMetaInfo 的<w:tblPr>,<w:tblGrid>元素替换 paraouterXml。

这是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]);

但它抛出了一些错误......

请指导我摆脱这个问题......

4

1 回答 1

4

ArgumentException: newChild 是从与创建此节点的文档不同的文档创建的

public XmlNode ReplaceChild(XmlNode newChild, XmlNode oldChild)

如果newChild是从另一个文档创建的,您可以使用XmlDocument.ImportNode将节点导入到当前文档。然后可以将导入的节点传递给该ReplaceChild方法。

于 2012-09-15T09:21:09.097 回答