我的xml以下
<component>
<!--Active Problems-->
<section>
<templateId root="2.16.840.1.113883.3.88.11.83.103" assigningAuthorityName="HITSP/C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.6" assigningAuthorityName="IHE PCC"/>
<templateId root="2.16.840.1.113883.10.20.1.11" assigningAuthorityName="HL7 CCD"/>
</section>
</component>
<component>
<!--Medications-->
<section>
<templateId root="2.16.840.1.113883.3.88.11.83.112" assigningAuthorityName="HITSP/C83"/>
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.19" assigningAuthorityName="IHE PCC"/>
<templateId root="2.16.840.1.113883.10.20.1.8" assigningAuthorityName="HL7 CCD"/>
</section>
</component>
从此我想读取包含templateId节点的节节点,其中根属性的值为2.16.840.1.113883.10.20.1.8。如何使用linq完成?
答案 0 :(得分:1)
您可以使用Linq-to-XML轻松完成此操作。
使用此:
using System.Xml.Linq; // required namespace for linq-to-xml
XDocument doc = XDocument.Load(@"mypath\myxmlfile.xml");
将XML文件加载到XDocument
对象中。
然后使用以下查询:
var section = from s in doc.Descendants("section")
where s.Elements("templateId")
.Any(t => t.Attribute("root").Value == "2.16.840.1.113883.10.20.1.8")
select s;
获取所需的<section>
元素。
<强>输出:强>
- <section>
<templateId root="2.16.840.1.113883.3.88.11.83.112" assigningAuthorityName="HITSP/C83" />
<templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.19" assigningAuthorityName="IHE PCC" />
<templateId root="2.16.840.1.113883.10.20.1.8" assigningAuthorityName="HL7 CCD" />
</section>