2012-05-31 3 views
0

Я пытаюсь прочитать XML-ответ от 192.com.Чтение XML-файла в C# .net

Это валидация деталей клиента.

Ответ XML устанавливается следующим образом (Информация о клиенте Удалены):

<?xml version="1.0"?> 
<Search Type="Result"> 
    <CountryCode>GBR</CountryCode> 
    <Person> 
    <Name> 
     <Forename>XXXXX</Forename> 
     <Surname>XXXXX</Surname> 
    </Name> 
    <DateOfBirth>XXXX-XX-XX</DateOfBirth> 
    <Age>XX</Age> 
    </Person> 
    <Addresses> 
    <Address Current="1"> 
     <Premise>X</Premise> 
     <Postcode>XX99 9XX</Postcode> 
     <CountryCode>GBR</CountryCode> 
    </Address> 
    </Addresses> 
    <SearchOptions> 
    <ProductCode>ProveID</ProductCode> 
    </SearchOptions> 
    <OurReference>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</OurReference> 
    <SearchDate>2012-05-30T12:39:55</SearchDate> 
    <Result> 
    <Summary> 
     <ReportSummary> 
     <DatablocksSummary> 
      <DatablockSummary> 
      <Name>CreditReference</Name> 
      <Decision>1</Decision> 
      </DatablockSummary> 
     </DatablocksSummary> 
     </ReportSummary> 
    </Summary> 
    <CreditReference Type="Result"> 
     <Summary> 
     <Decision>1</Decision> 
     <DecisionReasons> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/TotalNumberOfVerifications</Element> 
      <Decision>1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/OpenAccountsMatch</Element> 
      <Decision>1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/DateOfBirthMatch</Element> 
      <Decision>1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/ElectoralRollMatch</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/ElectoralRollDateOfBirthMatch</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/TelephoneDirectoryMatch</Element> 
      <Decision>1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/BOEMatch</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/PEPMatch</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/OFACMatch</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/DeceasedMatch</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/COAMatch</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/CIFASMatch</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/NoOfCCJ</Element> 
      <Decision>-1</Decision> 
      </DecisionReason> 
      <DecisionReason> 
      <Element>CreditReferenceSummary/NoOfOpenAccountsLenders</Element> 
      <Decision>1</Decision> 
      </DecisionReason> 
     </DecisionReasons> 
     </Summary> 
     <CreditReferenceSummary> 
      <CreditReferenceDecision/> 
      <CreditReferenceScore/> 
      <TotalNumberOfVerifications>7</TotalNumberOfVerifications> 
      <OpenAccountsMatch>1</OpenAccountsMatch> 
      <DateOfBirthMatch>1</DateOfBirthMatch> 
      <ElectoralRollMatch>0</ElectoralRollMatch> 
      <ElectoralRollDateOfBirthMatch>0</ElectoralRollDateOfBirthMatch> 
      <TelephoneDirectoryMatch>1</TelephoneDirectoryMatch> 
      <PhoneNumberMatch>0</PhoneNumberMatch> 
      <DriverLicenceMatch/> 
      <PassportMatch/> 
      <DFATMatch/> 
      <BOEMatch>0</BOEMatch> 
      <PEPMatch>0</PEPMatch> 
      <OFACMatch>0</OFACMatch> 
      <DeceasedMatch>0</DeceasedMatch> 
      <COAMatch>0</COAMatch> 
      <CIFASMatch>0</CIFASMatch> 
      <GoneAwayMatch/> 
      <HighRiskAddressMatch/> 
      <CommercialEntitiesAtAddressMatch/> 
      <NoOfCommercialEntitiesAtAddress/> 
      <NoOfCCJ>0</NoOfCCJ> 
      <NoOfOpenAccountsLenders>5</NoOfOpenAccountsLenders> 
      <IDVerified/> 
     </CreditReferenceSummary> 
     <CreditReferenceDetails> 
     <StandardisedAddress Current="1"> 
      <SubPremise/> 
      <Premise>999999</Premise> 
      <SubStreet/> 
      <Street>XXXXXXXXX</Street> 
      <SubLocality/> 
      <Locality>XXXXXXXXXXXXXXXXXXX</Locality> 
      <PostTown>XXXXXXXXXXXXXXXXXXX</PostTown> 
      <Region>XXXXXXXXXXXXXXX</Region> 
      <Postcode>XX999XX</Postcode> 
      <CountryCode>GBR</CountryCode> 
     </StandardisedAddress> 
     </CreditReferenceDetails> 
    </CreditReference> 
    </Result> 
</Search> 

Мне нужно извлечь из этого XML элементы для следующих из <CreditReferenceSummary>

  • <TotalNumberOfVerifications>7</TotalNumberOfVerifications>
  • <OpenAccountsMatch>1</OpenAccountsMatch>
  • <DateOfBirthMatch>1</DateOfBirthMatch>
  • <DeceasedMatch>0</DeceasedMatch>
  • <NoOfOpenAccountsLenders>5</NoOfOpenAccountsLenders>

Любая помощь очень ценится. Заранее спасибо.

+2

Что вы пытаетесь? Или вы просто ищете, чтобы другие могли бесплатно предоставить ваш рабочий код? –

+0

XML, который вы опубликовали, не является хорошо сформированным документом. Что называется корневым элементом? –

+0

Немного суровый Я думаю, Джаред. Я попробовал несколько альтернатив, но, как отмечает SteveDog, это не хорошо оформленный документ. –

ответ

1

Предполагая, что корневой элемент называется корнем, так как вы не показали его в вашем примере, вы могли бы использовать XPath для чтения значения искомых элементов:

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(responseXml); 
int totalNumberOfVerifications = int.Parse(doc.SelectSingleNode("Search/Result/CreditReference/CreditReferenceSummary/TotalNumberOfVerifications")); 
// etc. 

Или, в качестве альтернативы, вы можете использовать XML десериализацию, чтобы раздуть объект с фром данных о XML. Я уверен, что вы могли бы найти много примеров того, что путем поиска вокруг:

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx

+0

Благодарим вас за совет Стив, я обновил ответ XML, чтобы включить в него все, что возвращается от них. –

+0

@Richard Я обновил свой пример, чтобы соответствовать. –

0

Вы можете использовать эту библиотеку и XPath для получения значений: https://github.com/ChuckSavage/XmlLib/

XElement root = XElement.Parse(string); // or .Load(file) 
int TotalNumberOfVerifications = root.XGetElement("//TotalNumberOfVerifications", 0); 
int OpenAccountsMatch = root.XGetElement("//OpenAccountsMatch", 0); 
int DateOfBirthMatch = root.XGetElement("//DateOfBirthMatch", 0); 
int DeceasedMatch = root.XGetElement("//DeceasedMatch", 0); 
int NoOfOpenAccountsLenders = root.XGetElement("//NoOfOpenAccountsLenders", 0); 

XGetElement имеет синтаксис:

public T XGetElement<T>(xpath search string, default value to use if not found, param objects for search) 
Смежные вопросы