Well, you can use Linq. See:
void Main()
{
XDocument xdoc = GetXmlData();
var result = xdoc.Descendants("rf")
.GroupBy(x => new {CC = x.Value.Equals("CC"), Att = x.Value.Equals("Att")})
.ToList();
result.Dump();
}
public XDocument GetXmlData()
{
string s = @"<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<rfs>
<rf id='cc_1_at_2_fid_3'>
<addData>
<entry>
<key>CC</key>
<value>ASARL</value>
</entry>
<entry>
<key>Att</key>
<value>BAR, Grégory Louis Joseph </value>
</entry>
<entry>
<key>Own</key>
<value>ASARL</value>
</entry>
<entry>
<key>Own</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>ASARL</value>
</entry>
</addData>
<CC>cc_1_at_2</CC>
<name>XYZ</name>
<ref>AV-25</ref>
<recs>
<rec id='cc_1_at_2_204122094'>
<addData>
<entry>
<key>CSta</key>
<value>Grant</value>
</entry>
<entry>
<key>Div</key>
<value>GNV</value>
</entry>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Att</key>
<value>BJoseph </value>
</entry>
<entry>
<key>Own</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>ASARL</value>
</entry>
</addData>
<ref>AV-25-1</ref>
<att>BARJoseph </att>
<agent>CP</agent>
</rec>
<rec id='cc_1_at_2_204121989'>
<addData>
<entry>
<key>CSta</key>
<value>Grant</value>
</entry>
<entry>
<key>CC</key>
<value>ASARL</value>
</entry>
<entry>
<key>Att</key>
<value>BJoseph </value>
</entry>
<entry>
<key>Own</key>
<value>ASARL</value>
</entry>
<entry>
<key>Own</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>ASARL</value>
</entry>
</addData>
<ref>AB-25-2</ref>
<owner>ANV</owner>
</rec>
<rec id='cc_1_at_2_203449195'>
<addData>
<entry>
<key>CSta</key>
<value>Pappl</value>
</entry>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Att</key>
<value>BJoseph </value>
</entry>
<entry>
<key>Own</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>ASARL</value>
</entry>
</addData>
<ref>AB-25-3</ref>
<att>BAoseph </att>
</rec>
<rec id='cc_1_at_2_204123928'>
<addData>
<entry>
<key>CSta</key>
<value>Grant</value>
</entry>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Att</key>
<value>BJoseph </value>
</entry>
<entry>
<key>Own</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>ASARL</value>
</entry>
</addData>
<ref>AB-25-4</ref>
<att>BAJoseph </att>
</rec>
<rec id='cc_1_at_2_204124349'>
<addData>
<entry>
<key>CSta</key>
<value>Abandoned</value>
</entry>
<entry>
<key>CC</key>
<value>ASARL</value>
</entry>
<entry>
<key>Att</key>
<value>BJoseph </value>
</entry>
<entry>
<key>Own</key>
<value>ASARL</value>
</entry>
<entry>
<key>Own</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>GNV</value>
</entry>
<entry>
<key>App</key>
<value>ASARL</value>
</entry>
</addData>
<ref>AB-252-5</ref>
<att>BARJoseph </att>
</rec>
</recs>
<col>false</col>
<costMod>1.0</costMod>
</rf>
<rf id='cc_5_at_3_fid_5'>
<addData>
<entry>
<key>C</key>
<value>Fd</value>
</entry>
<entry>
<key>IT</key>
<value>Asso</value>
</entry>
</addData>
<CC>cc_5_at_3</CC>
<name>ABCD</name>
<ref>GAL-099</ref>
<recs>
<rec id='cc_5_at_3_RecordId_205359668'>
<addData>
<entry>
<key>CS</key>
<value>G</value>
</entry>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Att</key>
<value>BJuian</value>
</entry>
<entry>
<key>Owner</key>
<value>Galapagos NV</value>
</entry>
<entry>
<key>Applicant</key>
<value>Galapagos NV</value>
</entry>
</addData>
</rec>
<rec id='cc_5_at_3_RecordId_6339136'>
<addData>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Att</key>
<value>KSe</value>
</entry>
</addData>
</rec>
<rec id='cc_5_at_3_RecordId_201785125'>
<addData>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Attorney</key>
<value>KSe</value>
</entry>
</addData>
</rec>
<rec id='cc_5_at_3_RecordId_203142672'>
<addData>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Att</key>
<value>BJuian</value>
</entry>
</addData>
</rec>
</recs>
<col>false</col>
<costMod>1.0</costMod>
</rf>
<rf id='cc_9_at_79_fid_6'>
<addData>
<entry>
<key>App</key>
<value>G</value>
</entry>
<entry>
<key>IT</key>
<value>Asso</value>
</entry>
</addData>
<costCentre>cc_9_at_79</costCentre>
<name>molecular targets and compounds, and methods to identify the same, useful in the treatment of joint degenerative and inflammatory diseases
</name>
<ref>GAL-054</ref>
<recs>
<rec id='cc_9_at_79_RecordId_6036063'>
<addData>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Att</key>
<value>Nich</value>
</entry>
</addData>
</rec>
<rec id='cc_9_at_79_RecordId_6485552'>
<addData>
<entry>
<key>CC</key>
<value>GNV</value>
</entry>
<entry>
<key>Attorney</key>
<value>Nich</value>
</entry>
</addData>
</rec>
</recs>
<col>false</col>
<costMod>1.0</costMod>
</rf>
</rfs>";
return XDocument.Load(new StringReader(s), LoadOptions.None);
}
Above code will return 3
rf
items:
<rf id="cc_1_at_2_fid_3">...</rf>
<rf id="cc_5_at_3_fid_5">...</rf>
<rf id="cc_9_at_79_fid_6">...</rf>