Link to home
Start Free TrialLog in
Avatar of Puds32
Puds32Flag for United Kingdom of Great Britain and Northern Ireland

asked on

How cam I xtract xml content into a new stream

Hello all
Below is a complete xml file. I would like to extract the following tag <SearchResults> and all it's content into a new stream using c#
Note I DO NOT want  <SearchResults xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> tag
I WANT <SearchResults> and all it's contents
Sorry if I was rude in using capitals!!!

Here goes the xml:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <VacancyDetailsResponse xmlns="http://Navms.Ms.ExternalInterfaces/2011">
      <MessageId>8d947e6f-f3c2-46b5-a8e9-2d7f397fb186</MessageId>
      <SearchResults xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <AVMSHeader>
          <ApprenticeshipVacanciesDescription>If you are interested in finding out more about employing apprentices, the benefits they can bring to your business, and the benefits of Apprenticeship vacancies please visit our website and complete the online enquiry form.</ApprenticeshipVacanciesDescription>
          <ApprenticeshipVacanciesURL>http:\\www.apprenticeshipvacancies.gov.uk\Employers.aspx</ApprenticeshipVacanciesURL>
        </AVMSHeader>
        <SearchResults>
          <VacancyFullData>
            <VacancyLocationType>Standard</VacancyLocationType>
            <VacancyAddress>
              <AddressLine1>Kelvin Place</AddressLine1>
              <AddressLine2/>
              <AddressLine3/>
              <AddressLine4/>
              <AddressLine5/>
              <County>Norfolk</County>
              <GridEastM>585823</GridEastM>
              <GridNorthM>281921</GridNorthM>
              <Latitude>52.4033195889</Latitude>
              <Longitude>0.7319373790</Longitude>
              <PostCode>IP24 3RR</PostCode>
              <Town>Thetford</Town>
            </VacancyAddress>
            <ApprenticeshipFramework>Process Manufacturing</ApprenticeshipFramework>
            <ClosingDate>2012-11-30T00:00:00</ClosingDate>
            <ShortDescription>Great opportunity to work for a successful company in Thetford as a Manufacturer / Machinist.</ShortDescription>
            <EmployerName>Polypads Limited</EmployerName>
            <LearningProviderName>Delivered by W S Training Ltd.</LearningProviderName>
            <NumberOfPositions>1</NumberOfPositions>
            <VacancyTitle>Manufacturer / Machinist</VacancyTitle>
            <CreatedDateTime>2012-10-02T09:07:59.023</CreatedDateTime>
            <VacancyReference>98571</VacancyReference>
            <VacancyType>IntermediateLevelApprenticeship</VacancyType>
            <VacancyUrl>https://apprenticeshipvacancymatchingservice.lsc.gov.uk/NAVMS/Forms/Vacancy/VacancyDetails.aspx?Query=WgjHmG7hReZCalVznA0EzjTdgvTfmmXSS787Cl2KUOjAF0b6anssFkf0eoS3q02D1QEkH6w2AGnOpwHWszd%2bSPVQQaoRu5gPdXVyZlziKMJg0bJb9PJ1Axze9JCU5Mu4OcsJCktAOaW0ztnbbmujGMflOqnj9KKyxb8M2gXAxGGG7lW2Qo6sW62SndaKjHslTWXkGR8nydthAigiaEXo8Nd05GmR0TdmqDXPXwbWsCE2nUu9d8UpfE3eZDds%2bLx3z5N34NtrO8hFbaXB%2fHmNXg%3d%3d</VacancyUrl>
            <FullDescription><![CDATA[A fantastic opportunity for a horse enthusiast to work in a fast growing industry.<br />Main Duties:<br /><ul><li>Cutting and preparation of materials </li><li>Sewing </li><li>Eyeletting </li><li>Packing </li><li>Quality checking </li></ul>]]></FullDescription>
            <SupplementaryQuestion1>How will you travel to work?</SupplementaryQuestion1>
            <SupplementaryQuestion2>Have you got any experience with horses?</SupplementaryQuestion2>
            <ContactPerson>Geminesse Curtis- Training &amp;Recruitment Administrator - 01473 604260 - gcurtis@wstraining.co.uk</ContactPerson>
            <EmployerDescription>Polypads manufacture horse tack and horse equipment for the equine industry. They sell to commercial and domestic customers. They currently employ 10 people.</EmployerDescription>
            <ExpectedDuration>15 months</ExpectedDuration>
            <FutureProspects>This is a fast growing company, and there is potential to grow with it. Increase work load and tasks as well as increasing responsibilities. &lt;br />&lt;br />Possibilities of becoming an experienced machinist. This is a permanent position.</FutureProspects>
            <InterviewFromDate>2012-06-04T00:00:00</InterviewFromDate>
            <LearningProviderDesc>WS Training offers apprenticeships in a wide variety of occupations. If you are interested in gaining a qualification while you work then contact us, whether you are already employed or need help finding a job. Apprenticeships allow you to "Earn While You Learn"</LearningProviderDesc>
            <LearningProviderSectorPassRate>67</LearningProviderSectorPassRate>
            <PersonalQualities><![CDATA[<ul><li>Horse knowledge essential </li><li>Able to work as part of a team </li></ul><p>?</p><p>?</p>]]></PersonalQualities>
            <PossibleStartDate>2012-06-11T00:00:00</PossibleStartDate>
            <QualificationRequired>Basic Literacy and Numeracy skills</QualificationRequired>
            <SkillsRequired><![CDATA[<ul><li>Good attention to detail </li><li>Experience using a sewing machine (desirable) </li></ul><p>?</p>]]></SkillsRequired>
            <TrainingToBeProvided>Level 2 in Manufacturing including technical certificate and key skills. This is a work based qualification and does not require day release to college.</TrainingToBeProvided>
            <WeeklyWage>100.0000</WeeklyWage>
            <WorkingWeek>Monday to Thursday 9am - 4:30pm</WorkingWeek>
            <OtherImportantInformation>From the 1st October 2010 a National Minimum Wage (NMW) for apprentices has been introduced for young people aged 16-18 and those aged over 19 in the first year of their Apprenticeship. The new rate is ?2.50 per hour. The new NMW applies to time working plus time spent training as this is also part of the Apprenticeship. Anyone not covered by the age category above will be entitled to the NMW appropriate to their age. &lt;br />&lt;br />Applications will be assessed and interviewed as soon as they are received, which may result in the vacancy closing before the advertised closing date, please apply as soon as possible to avoid disappointment.</OtherImportantInformation>
            <EmployerWebsite/>
          </VacancyFullData>        
        </SearchResults>
        <TotalPages>10</TotalPages>
      </SearchResults>
    </VacancyDetailsResponse>
  </s:Body>
</s:Envelope>


If anyone could make my New Year I would be ever in their debt
Thanks Puds 32
ASKER CERTIFIED SOLUTION
Avatar of kaufmed
kaufmed
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Sorry for offtopic, why do you want to get rid of xmlns:i? It's just a declaration of an alias for the namespace, while the element itself does not belong to that namespace, so the declaration does not make your post-processing any harder.
Avatar of Puds32

ASKER

Hi sorry for the delay in replying
Thanks for the above help, I will give it a try later today and update you

As to the offtopic comment:
I am putting the fragment into a datatable which I will then staore to an sql database, this works fine and seems staright forward, but if I try loading the whole documnet into a datatable I get errors, I'm a bit new this and have chosen the path of least resistance!!!
@JustAndrei

Hopefully I'll be corrected if I am wrong  ; )

I initially thought he was trying to strip out the alias, but I looked a bit closer and there are actually two SearchResults elements--one a descendant of the other. The ancestor has the namespace declaration whereas the descendant does not. The code above reflects trying to get the descendant, not the ancestor.
Oh, I didn't notice there were two elements, so I thought Puds32 wanted to remove the declaration. Now it seems the descendant is needed indeed. Sorry, it's my mistake.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Puds32

ASKER

Hi kaufmed
Your solution seems to have worked beautifully, the resulting xml fragment loaded into a datatable and that desplayed in a grid

Hi JustAndrei
You right it did include a namespace in the fragment, but this didn't seem to stop it loading into a datatable so I can live with it, if you know how to get rid of the namespace that would be good

Thanks to you both
Regards Puds32
foreach( var e in searchResults.First().DescendantsAndSelf() )
{
    e.Name = XNamespace.None.GetName( e.Name.LocalName );
}

Open in new window