При понимании Linq К Xml - Потомки не возвращают результатов

Я - completly Новое для Linq2XML, поскольку я кодирую ко многому, выравнивает для выполнения простых вещей, и в простом проекте я хотел дать ему попытку...

Я с этим в течение 2 часов и ничего, что я делаю get's это право: (

Я действительно, действительно думаю для возвращения к XmlNode-code-alike

Задача:

  • Я отправляю Действие SOAP службе ASMX, и я получаю ответ как XML
  • Я Синтаксический анализ XML в объект XDocument
  • Я пытаюсь добраться, список узлов... допускают ошибку! Проблема!

поскольку Вы видите из этого снимка экрана

сопроводительный текст http://www.balexandre.com/temp/2010-02-26_0038.png

мой XDocument имеет Узел под названием ведьма TransactionInformationType, Последовательность, и я простой хочу получить все и получить только 2 переменные, в которых я нуждаюсь (Вы видите прокомментированный код), чуть ниже выбора c;

в окне Watch Вы видите это

doc.Descendants("TransactionInformationType")

возвраты ничто вообще и наблюдение содержанием XDocument в тексте Visualizer, это действительно существует!

Кто-либо хочет объяснить и помочь мне передающий эту ОГРОМНУЮ стену?

Спасибо!


Добавленный

Содержание XDocument


Ответ

Ответ XML имеет

и я должен использовать это в качестве Пространства имен!

оказывается, что, для получения значений я действительно должен использовать 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
            };

Спасибо всем за справку!

41
задан balexandre 26 February 2010 в 11:38
поделиться

2 ответа

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");
48
ответ дан 27 November 2019 в 00:46
поделиться

Это должно решить вашу проблему (замените пространство имен правильным URL-адресом):

XNamespace ns = "https://ssl.ditonline...";
doc.Descendants(ns + "TransactionInformationType");
12
ответ дан 27 November 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: