xPath selectSingleNode не могу выбрать элемент

493
25 декабря 2016, 18:39

Добрый день. есть XML файл

<issuance xmlns="http://www.w3schools.com" sender="35">
    <general>
        <number>35</number>
        <dateIssuance>2016-12-22</dateIssuance>
        <dateTransaction>2016-12-10</dateTransaction>
        <documentType>ORIGINAL</documentType>
    </general>
    <seller>
          //тут тоже есть поля и т.д.
    </seller>
</issuance>

Передаю в метод загруженый xml документ и пытаюсь получить значения полей

XmlNode doc = docs;
XmlNode selectNodeGeneral = doc.SelectSingleNode("/issuance/general");
elnVat.number = selectNodeGeneral.SelectSingleNode("number").InnerText;
elnVat.dateIssuance = selectNodeGeneral.SelectSingleNode("dateIssuance").InnerText;

но строчка XmlNode selectNodeGeneral = doc.SelectSingleNode("/issuance/general");возвращaет null, если убрать xmlns="http://www.w3schools.com" sender="35"и оставить только ` то код начинает работать. Подскажите как мне быть?

Answer 1

Нужно указывать полное имя ноды, вместе с namespace, через XmlNamespaceManager, примерно так:

// считая, что docs - это XmlDocument
XmlNamespaceManager ns = new XmlNamespaceManager(docs.NameTable);
ns.AddNamespace("w3s", "http://www.w3schools.com");
XmlNode doc = docs;
XmlNode selectNodeGeneral = doc.SelectSingleNode("/w3s:issuance/w3s:general", ns);
elnVat.number = selectNodeGeneral.SelectSingleNode("w3s:number", ns).InnerText;
elnVat.dateIssuance = selectNodeGeneral.SelectSingleNode("w3s:dateIssuance", ns).InnerText;
READ ALSO
Генерация и движение объектов(врагов) [требует правки]

Генерация и движение объектов(врагов) [требует правки]

Хотел бы узнать, как в консоле реализовать генерацию, движение и стрельбу противников

284
Убрать полосы прокрутки Console C#

Убрать полосы прокрутки Console C#

Пишу мини-игру на Console C#Для более красивого отображения хочется убрать полосы прокрутки снизу и сбоку консоли

653
Что означает эта конструкция с EventHandler?

Что означает эта конструкция с EventHandler?

VS предложил "упростить"

326