我有一个通过从一个字文档解析XML创建的XElement对象找到的节点。我想要做的就是找到并删除,我试图找到使用LINQ特定的节点。的XElement除去使用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的最佳实践。
非常感谢您的建议和信息。我发现它非常有用。我相信我会简单地导航到节点而不是使用LINQ。再次感谢! – TheMethod 2012-08-09 12:17:50
不客气,我很高兴你设法解决这个问题。 – Bazzz 2012-08-09 12:42:37