Вы не получаете результат, поскольку в теге Document
есть пространство имен.
Чтобы решить эту проблему, объявите пространство имен и добавьте его к имени элемента:
XNamespace ns = "urn:com.dovetailsystems:dps-if-gfc-request.001";
Console.WriteLine(xml.Descendants(ns + "TxId").First().Value);
Этот код будет выводить «FirstTxId» на консоль.
Вы также можете временно удалить пространство имен (после удаления не сохраняйте документ и не добавляйте его снова перед сохранением):
public static void RemoveNamespace(this XElement container)
{
container.DescendantsAndSelf().Attributes().Where(x => x.IsNamespaceDeclaration).Remove();
foreach (var elem in container.DescendantsAndSelf())
elem.Name = elem.Name.LocalName;
}
Использование этого метода расширения: xml.Root.RemoveNamespace();
После удаления исходный код должен работать так, как ожидалось.
К сожалению, похоже, что нет способа игнорироватьпространство имен;так что либо добавление, либо удаление его должно сработать ...