我在同一个内容控件中有3个表,如何获取第一个表并将其删除?
我尝试过使用
SdtBlock ccWithTable = mainPart.Document.Body.Descendants<SdtBlock>().Where
(r => r.SdtProperties.GetFirstChild<Tag>().Val == tag).Single();
Table theTable = ccWithTable.Descendants<Table>().First();
ccWithTable.RemoveChild(theTable);
但是这给了我一个错误:
指定的oldChild不是此元素的子元素
我怀疑由于该表不是内容控件的子代,还有其他方法吗?
答案 0 :(得分:2)
从您的评论中,我猜您可以访问table
对象,但它不是sdtblock
的直接子项,因此您无法使用{{ccWithTable.RemoveChild()
将其删除1}}方法(是的,它假设要删除的项目是此元素的直接子项的一部分。)
但是如果你可以访问表对象(这是一个子chilld),则不需要知道它的父对象。
只需调用OpenXmlElement.Remove()
方法:它将从其父级中删除元素。
theTable.Remove();