猜猜人们需要一些使用 Linq-to-xml 的经验和构建 openXML word 文档的知识。
我有这个应该找到内容控件的 Linq to XML 查询。它在大多数情况下都有效,但我认为它仍然只是临时操纵而不是适当的。
如果我理解正确的话,它的工作原理是检查 StdRuns 并查找它的属性是否包含一个名为 Tag 的属性。
问题是内容控件可能不一定是 RUN 的一部分。例如,如果它首先添加到一行中。我不想以后再遇到问题,所以我想知道是否有更好的方法来使用 linq 访问所有内容控件。
这就是现在的 Linq 查询:
var cont = from sdt in document.MainDocumentPart.RootElement.Descendants<SdtRun>()
let sdtPr = sdt.GetFirstChild<SdtProperties>()
let tag = (sdtPr == null ? null : sdtPr.GetFirstChild<Tag>())
where tag != null
select new
{
SdtProps = sdtPr,
TagName = tag.GetAttribute("val", sdt.NamespaceUri).Value
};
提前致谢。