Monday, 20 May 2013

C# - Finding element attribute with XDocument

C# - Finding element attribute with XDocument

I'm trying to get the PurchaseDate from the following XML structure (a receipt from an in-app purchase in Windows Phone):
<Receipt Version="1.0" CertificateId="..." xmlns="http://schemas.microsoft.com/windows/2012/store/receipt">
  <ProductReceipt PurchasePrice="$0" PurchaseDate="2013-05-20T19:27:09.755Z" Id="..." AppId="..." ProductId="Unlock" ProductType="Consumable" PublisherUserId="..." PublisherDeviceId="..." MicrosoftProductId="..." />
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm=http://www.w3.org/TR/2001/REC-xml-c14n-20010315 />
      <SignatureMethod Algorithm=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 />
      <Reference URI="">
        <Transforms>
          <Transform Algorithm=http://www.w3.org/2000/09/xmldsig#enveloped-signature />
        </Transforms>
        <DigestMethod Algorithm=http://www.w3.org/2001/04/xmlenc#sha256 />
        <DigestValue>...</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>...</SignatureValue>
  </Signature>
</Receipt>
My code goes as follows:
XDocument doc = XDocument.Parse(receiptXml);

string date = doc.Root.Element("ProductReceipt").Attribute("PurchaseData").Value;
This keeps raising an access error, because doc.Root.Element("ProductReceipt") is null. Why is XDocument not getting the ProductReceipt element?

No comments:

Post a Comment