прочитать XML-файл, имеющий пространство имен в корне - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь получить значения каждого элемента из файла XML, имеющего пространство имен в корневом элементе, но безуспешно.

XML-файл выглядит как

enter image description here

Я написал код на C # с использованием linq, но не смог получить никакого результата.

XDocument xdoc = new XDocument();
var doc = XDocument.Load(fileFullPath);
XNamespace ns = "http://www.springframework.net";

var elements = from data in xdoc.Descendants(ns + "Record")
               select new
               {
                   firstName = (string)data.Element(ns + "FirstName").Value,
                   lastName = (string)data.Element(ns + "LastName").Value,
                   id = (string)data.Element(ns + "ID").Value,
                };

foreach (var element in elements)
{
    Console.WriteLine(element.firstName);
    Console.WriteLine(element.lastName);
    Console.WriteLine(element.id);
}

Я хочу получить результат, подобный

Ram
Brown
22148868

Может кто-нибудь предложить или отредактировать мой код, пожалуйста.

1 Ответ

3 голосов
/ 03 апреля 2019

Ваши элементы XML не в пространстве имен http://www.springframework.net - они находятся в пустом пространстве имен, поэтому у них там xmlns="".

У вас также есть опечатка - у вас есть две XDocument переменные - одна xdoc (пустой документ) и одна doc (документ, который вы загрузили). Ваш текущий код запрашивает пустой, который, очевидно, не будет работать. Я предлагаю вам полностью избавиться от этой переменной.

Итак, вы хотите изменить свой код на:

var elements = from data in doc.Descendants(ns + "Record")
               select new
               {
                   firstName = (string) data.Element("FirstName"),
                   lastName = (string) data.Element("LastName"),
                   id = (string) data.Element("ID"),
                };

Обратите внимание, что я сохранил часть ns для элемента Record, потому что - это в пространстве имен. Я также удалил использование свойства Value - вам или необходимо наложить элемент или , вам нужно использовать свойство Value, но не оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...