如何在OpenXML中使用c#获取footnoterreference Id



我有一个像这样的OOXML文档的段落元素。现在我想要的footnoterefreference id从这个文本编程使用c#。

Text From document.xml

<w:p>
  <w:r>
    <w:rPr>
      <w:rStyle w:val="FootnoteReference" />
    </w:rPr>
    <w:footnoteReference w:id="2" />
  </w:r>
</w:p>

c#代码
private BodyPara writePara(BodyPara bPara2, OpenXmlElement pTag)
    {
        Footnotes fn = null;
        foreach (var run in pTag.Descendants<Run>())
        {
            if (run.HasChildren)
            {
                foreach (var runProp in run.Descendants<RunProperties>())
                {
                    foreach (var runStyle in runProp.Descendants<RunStyle>())
                    {
                        if (runStyle.Val != null)
                        {
                            string runSty = runStyle.Val.Value;
                            if (runSty == "FootnoteReference")
                            {
                                if (fn != null)
                                {
                                    bPara2.FootNotes.Add(fn);
                                }
                                fn = new Footnotes();
                            }
                            else if (runSty == "CommentReference")
                            {

                            }
                            else
                            {
                                if (fn != null)
                                {
                                    fn.FootText = fn.FootText + run.InnerText;
                                }
                            }
                        }
                    }
                    //FootnotesPart footnotesPart = wordDoc.MainDocumentPart.FootnotesPart;
                    //if (footnotesPart != null)
                    //{
                    //  IEnumerable<Footnote> footnotes = footnotesPart.Footnotes.Elements<Footnote>();
                    // ...
                    //}
                    if (runProp.NextSibling() != null)
                    {
                        OpenXmlElement fr = runProp.NextSibling();
                        foreach (var fnref in fr)
                        {
                            if (fnref != null)
                            {
                                // fn.FootnoteID = fnref.Id.Value.ToString();
                            }
                        }
                    }
                    foreach (var shd in runProp.Descendants<Shading>())
                    {
                        if (shd.Fill != null)
                        {
                            string shdvalue = shd.Fill.Value;
                        }
                    }
                }
            }
        }
        return bPara2;
    }

我用这个来获得每个脚注的脚注参考id。在这个循环中,我不能得到类型为footnoterreference的Run的后代及其值。请帮我一下。谢谢你。

对不起,我在参数列表中犯了一个错误,我在参数列表中使用的不是Paragraph pTag,而是OpenXmlElement pTag。现在我把它从通用改为特定。

相关内容

  • 没有找到相关文章

最新更新