Search code examples
c#xmlssis-2017

Parse complex xml to fetch particular node text in c#


Parsing XML file using SSIS / C#

operations like fetching record count from trailer , TIN from body and store into a variable or somewhere temporarily(your suggestions please) for further processing. I don't want to store it in a table.

Please find the sample xml mentioned below

<ACOParticipantData xmlns:xsi="">
  <Header>
    <HeaderCode>HDR_PFPRVDR</HeaderCode>
    <FileCreationDate>20160101</FileCreationDate>
    <ACOProgCode>21</ACOProgCode>
  </Header>
  <Participants>
    <Participant>
      <ACO_ID>V199</ACO_ID>
      <TIN>123456789</TIN>
      <Old_TIN>987654321</Old_TIN>
      <Org_NPI>1234567890</Org_NPI>
      <Ind_NPI>1234567890</Ind_NPI>
      <CCN>123456</CCN>
      <PRG_Eff_Dt>20160101</PRG_Eff_Dt>
      <PRG_Term_Dt>20161231</PRG_Term_Dt>
    </Participant>
  </Participants>
  <Trailer>
    <TrailerCode>TRL_PFPRVDR</TrailerCode>
    <FileCreationDate>20160101</FileCreationDate>
    <RecordCount>1</RecordCount>
  </Trailer>
</ACOParticipantData>

Solution

  • You need to get fist get list of Participants then fetch all Participants tin number into list like

    Here i created console app for your demonstration purpose.

    class Program
    {
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(@"Path to your xml file");
    
            List<long> tinList = new List<long>();
    
            tinList = doc.Descendants("Participants").Elements().Elements("TIN").Select(x => (long)x).ToList();
    
            foreach (long tin in tinList)
            {
                Console.WriteLine(tin);
            }
    
            Console.ReadLine();
        }
    }
    

    Output: (For 2 Participants)

    enter image description here