首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#.net中读取XML文件

在C#.net中读取XML文件
EN

Stack Overflow用户
提问于 2012-05-31 16:14:15
回答 3查看 3.4K关注 0票数 0

我正在尝试读取来自192.com的XML响应。

这是对客户详细信息的验证。

XML响应如下(客户详细信息删除):

代码语言:javascript
复制
<?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>

我需要从这个<CreditReferenceSummary>中提取以下内容的元素

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

任何帮助都非常感谢。提前谢谢你。

EN

回答 3

Stack Overflow用户

发布于 2012-05-31 16:16:12

我会使用LINQ来读取XML

看一看

LINQ to read XML

票数 1
EN

Stack Overflow用户

发布于 2012-05-31 16:47:53

假设根元素名为root,因为您没有在示例中显示它,所以可以使用XPath读取所需元素的值:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2012-06-05 10:43:30

您可以使用这个库和XPath获取值:https://github.com/ChuckSavage/XmlLib/

代码语言:javascript
复制
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的语法为:

代码语言:javascript
复制
public T XGetElement<T>(xpath search string, default value to use if not found, param objects for search)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10837372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档