[英]Understanding Linq To Xml - Descendants return no results
我是Linq2XML的完全新手,因為我編寫了很多行代碼來執行簡單的事情,在一個簡單的項目中,我想嘗試一下...
我已經用了2個小時了,但我什么都沒做對:(
我真的很想回到XmlNode-code-like
任務:
如您從此屏幕截圖中所見
替代文字http://www.balexandre.com/temp/2010-02-26_0038.png
我的XDocument有一個稱為TransactionInformationType的Node,它是一個Sequence,我簡單地想全部獲取並檢索選擇c下方僅需要的2個變量(您可以看到注釋的代碼) ;
在“ 監視”窗口中,您可以看到
doc.Descendants("TransactionInformationType")
根本不返回任何內容,並且通過Text Visualizer中的XDocument內容看到它確實存在!
有人願意解釋並幫助我通過這個巨大的牆嗎?
謝謝!
添加
回答
響應XML具有
<gettransactionlistResponse xmlns="https://ssl.ditonlinebetalingssystem.dk/remote/payment">
我必須使用它作為命名空間!
事實證明,要檢索值 ,我也確實需要使用XNamespace ,因此最終代碼如下所示:
// Parse XML
XDocument doc = XDocument.Parse(strResponse);
XNamespace ns = "https://ssl.ditonlinebetalingssystem.dk/remote/payment";
var trans = from item in doc.Descendants(ns + "TransactionInformationType")
select new TransactionInformationType
{
capturedamount = Convert.ToInt32(item.Element(ns + "capturedamount").Value),
orderid = item.Element(ns + "cardtypeid").Value
};
謝謝大家的幫助!
var result = doc.Descendants("TransactionInformationType");
在XDocument中選擇元素名稱為"TransactionInformationType"
且在空名稱空間中的所有后代。 從屏幕快照中,您似乎要選擇的元素似乎在名稱空間"https://ssl.ditonlinebetalingssystem.dk/remote/payment"
。 您需要明確指定:
XNamespace ns = "https://ssl.ditonlinebetalingssystem.dk/remote/payment";
↑↑ ↑
var result = doc.Descendants(ns + "TransactionInformationType");
這應該可以解決您的問題(用正確的URL替換名稱空間):
XNamespace ns = "https://ssl.ditonline...";
doc.Descendants(ns + "TransactionInformationType");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.