我想要做的是找到a CommentRangeStart
和相应的之间的OpenXMLElements CommentRangeEnd
.
我已经尝试了两种方法来实现这一点,但问题是CommentRangeEnd
不需要与开始处于同一级别.它可以嵌套在子元素中,看下面非常简单的结构(注意这是不正确的打开xml它只是为了显示一般的想法).
<w:commentstart/>
<w:paragraph>
<w:run />
<w:commentend />
</w:paragraph>
Run Code Online (Sandbox Code Playgroud)
我尝试过的两个项目如下:第一:我写了一个枚举,它返回项目直到结束
public static IEnumerable<OpenXmlElement> SiblingsUntilCommentRangeEnd(CommentRangeStart commentStart)
{
OpenXmlElement element = commentStart.NextSibling();
if (IsMatchingCommentEnd(element, commentStart.Id.Value))
{
yield break;
}
while (true)
{
yield return element;
element = element.NextSibling();
// Check that the item
if (element == null)
{
yield break;
}
if (IsMatchingCommentEnd(element, commentStart.Id.Value))
{
yield break;
}
}
}
public static bool IsMatchingCommentEnd(OpenXmlElement element, string commentId)
{
CommentRangeEnd commentEnd = element as CommentRangeEnd;
if (commentEnd …
Run Code Online (Sandbox Code Playgroud)