按属性名称的XElements

时间:2010-08-19 13:53:37

标签: linq linq-to-xml

我需要编写一个Linq查询来根据属性名称获取XElements。

XMl不是结构化的。属性可能位于某个XML节点的顶部或xml中的任何位置?

实际上它是word文档xml文件document.xml会有地方使用r:Id,现在我需要获取包含该属性的所有元素!

下面是XML

> <w:p w:rsidR="00302209"
> w:rsidRDefault="005C326E"
> w:rsidP="00302209">
> - <w:pPr>   <w:framePr w:w="3186" w:h="1701" w:hSpace="142"
> w:wrap="around" w:vAnchor="page"
> w:hAnchor="page" w:x="8688"
> w:y="11449" />    <w:spacing
> w:line="240" w:lineRule="exact" /> 
> - <w:rPr>   <w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman"
> />    <w:szCs w:val="24" />   
> </w:rPr>   </w:pPr>
> - <w:hyperlink r:id="rId6" w:history="1">
> - <w:r w:rsidR="00302209">
> - <w:rPr>   <w:rStyle w:val="Hyperlink" />    <w:rFonts
> w:ascii="Times New Roman"
> w:hAnsi="Times New Roman" />   
> <w:szCs w:val="24" />    </w:rPr>  
> <w:t>dd.com</w:t>    </w:r>  
> </w:hyperlink>   </w:p> <w:sectPr
> w:rsidR="001D3CA8"
> w:rsidRPr="00E275EA"
> w:rsidSect="00522450">  
> <w:headerReference w:type="even"
> r:id="rId7" />    <w:headerReference
> w:type="default" r:id="rId8" />   
> <w:footerReference w:type="even"
> r:id="rId9" />    <w:footerReference
> w:type="default" r:id="rId10" />   
> <w:headerReference w:type="first"
> r:id="rId11" />    <w:footerReference
> w:type="first" r:id="rId12" />   
> <w:pgSz w:w="11907" w:h="16840"
> w:code="9" />    <w:pgMar w:top="1701"
> w:right="3572" w:bottom="510"
> w:left="1134" w:header="567"
> w:footer="238" w:gutter="0" />   
> <w:cols w:space="708" />    <w:titlePg
> />    </w:sectPr>

此致 Francis P。

1 个答案:

答案 0 :(得分:2)

当然,这很简单:

var elements = doc.Descendants().Where(x => x.Attribute("Foo") != null);

如果那不是你追求的那样,请告诉我......