【发布时间】:2010-08-06 12:57:26
【问题描述】:
猜想人们需要一些使用 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
};
提前致谢。
【问题讨论】:
-
看来用 SdtElement 替换 SdtRun 可能是这里的答案!
标签: linq-to-xml openxml contentcontrol