我有一个 XElement 对象,它是通过从 word 文档中解析 XML 创建的。我想要做的是找到并删除我试图使用 LINQ 找到的特定节点。
XML 有几百行长,所以我不想在这里发布整个内容,我只显示前 20 行:
<w:body xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p w:rsidR="00CB3A3E" w:rsidP="00257CF7" w:rsidRDefault="008C1E91">
<w:pPr>
<w:pStyle w:val="Heading-Title" />
</w:pPr>
<w:r>
<w:t>References</w:t>
</w:r>
</w:p>
<w:sdt>
<w:sdtPr>
<w:alias w:val="Client" />
<w:tag w:val="ClientName" />
<w:id w:val="-1008363323" />
<w:lock w:val="contentLocked" />
<w:placeholder>
<w:docPart w:val="DefaultPlaceholder_1082065158" />
</w:placeholder>
<w:dataBinding w:xpath="/project[1]/ClientName[3]" w:storeItemID="{1BDA6E50-A0B2-47FF-9929-1F045B6CF8AD}" />
<w:text />
我要删除的节点是 : <w:t>References</w:t>
。我目前遇到“Sequence contains no elements"
异常。newBody 是 XElement。
newBody.Descendants.Where(Function(e) e.Name.Equals("<w:t>") AndAlso e.Value.Equals("References")).First().Remove()
正如我所说,我得到了上面提到的异常。这是我应该尝试到达该节点的方式吗?有没有更好的办法?为什么我的查询没有得到指定的节点?非常感谢任何关于如何更好地做到这一点的建议,当谈到 .net 和 LINQ 本身中的 XML 遍历时,我仍在尝试学习最佳实践。非常感谢!!