C# 如何获取大型XDocument中节点的值
我们一直在与Google Checkout合作,而且响应总是大量的XML数据。我想要的是从这个废墟中解析出名为merchant private data的节点 它可能并不总是存在,并且可能位于多个位置(具有相同的值) 我尝试了一种简单的方法,但没有产生任何结果 从沙盒响应中:C# 如何获取大型XDocument中节点的值,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我们一直在与Google Checkout合作,而且响应总是大量的XML数据。我想要的是从这个废墟中解析出名为merchant private data的节点 它可能并不总是存在,并且可能位于多个位置(具有相同的值) 我尝试了一种简单的方法,但没有产生任何结果 从沙盒响应中: <?xml version="1.0" encoding="UTF-8"?> <authorization-amount-notification xmlns="http://checkout.googl
<?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>
您缺少命名空间,请按如下方式尝试:
XDocument input = XDocument.Parse(xmldata);
XNamespace ns = input.Root.Name.Namespace;
string privateData = null;
var privateDataNode = (from nodes in input.Descendants(ns + "merchant-private-data") select nodes).FirstOrDefault();
if (privateDataNode != null && privateDataNode.HasElements && privateDataNode.Element(ns + "MERCHANT_DATA_HIDDEN") != null)
privateData = privateDataNode.Element(ns + "MERCHANT_DATA_HIDDEN").Value;
XDocument input = XDocument.Parse(xmldata);
XNamespace ns = input.Root.Name.Namespace;
string privateData = null;
var privateDataNode = (from nodes in input.Descendants(ns + "merchant-private-data") select nodes).FirstOrDefault();
if (privateDataNode != null && privateDataNode.HasElements && privateDataNode.Element(ns + "MERCHANT_DATA_HIDDEN") != null)
privateData = privateDataNode.Element(ns + "MERCHANT_DATA_HIDDEN").Value;