小编Mik*_*e B的帖子

在CommentRangeStart和CommentRangeEnd之间获取OpenXmlElements

我想要做的是找到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)

c# openxml openxml-sdk

6
推荐指数
1
解决办法
1875
查看次数

标签 统计

c# ×1

openxml ×1

openxml-sdk ×1