2012-08-14 43 views
1

Google Checkout一直工作很多,並且響應始終是大量的XML數據。我想要的是從這個瓦礫中解析出名爲merchant-private-data的節點。如何獲取大型XDocument中的節點的值

它可能並不總是存在,它可能在多個位置(具有相同的值)。

我試過一個簡單的方法,但沒有產生任何結果。

從沙箱迴應:

<?xml version="1.0" encoding="UTF-8"?> 
<authorization-amount-notification xmlns="http://checkout.google.com/schema/2" serial-number="123456789"> 
    <authorization-amount currency="USD">11.65</authorization-amount> 
    <authorization-expiration-date>2012-08-21T12:30:16.000Z</authorization-expiration-date> 
    <avs-response>Y</avs-response> 
    <cvn-response>U</cvn-response> 
    ... 
    <order-summary> 
     ... 
     <shopping-cart> 
     ... 
      <merchant-private-data> 
       <MERCHANT_DATA_HIDDEN>50c77071-aeea-40fe-962b-f4d51d1f9b0</MERCHANT_DATA_HIDDEN> 
      </merchant-private-data> 
     ... 
     </shopping-cart> 
     ... 
    </order-summary> 
</authorization-amount-notification> 

可能會在多個位置,可能並不總是在該位置。

我的想法是這樣,但它沒有工作(即使收益率0的結果雖然我可以看到XML節點):你錯過了命名空間

XDocument input = XDocument.Parse(xmldata); 
string privateData = null; 
var privateDataNode = (from nodes in input.Descendants("merchant-private-data") select nodes).FirstOrDefault(); 
if (privateDataNode != null && privateDataNode.HasElements && privateDataNode.Element("MERCHANT_DATA_HIDDEN") != null) 
     privateData = privateDataNode.Element("MERCHANT_DATA_HIDDEN").Value; 

回答

2

,嘗試這樣的:

​​
+0

解決了這個問題。謝謝! – Patrick 2012-08-14 11:05:27

+0

太棒了!我很樂意提供幫助。 – 2012-08-14 11:06:05