C# читка с xml файла

195
01 мая 2019, 12:10

Очень нужна помощь. У меня есть файл xml со следующей структурой

<?xml version="1.0" encoding="UTF-8"?>
<Head xmlns="http://www.sample-package.org">
    <Number>748</Number>
    <Number_confirm>977</Number_confirm>
    <Positions>
        <Tare_id>2442</Tare_id>
    </Positions>
    <Positions>
        <Product_id>168813</Product_id>
    </Positions>
</Head>

Нужно пройтись по файлу и добавить в словарь ключик и значение (N и "Number"), (id и Product_id).

//открываем xml
doc.Load(temp);
var root = doc.GetElementsByTagName("Head");
var documents = new List<Dictionary<string, object>>();
for (int i = 0; i <root.Count; i++)
{
    for (int j = 0; j < root[i].ChildNodes.Count; j++)
    {
        var element = root[i].ChildNodes[j];
        InfoManager.MessageBox("element:{0}", element.Value);
        var document = new Dictionary<string, object>();
        document.Add("N", element.Attributes.GetNamedItem("Number"));
        document.Add("NC", element.Attributes.GetNamedItem("Number_confirm"));
        documents.Add("ID",
        element.Attributes.GetNamedItem("Product_id"));
        documents.Add(document);
    }
}   

у меня element.Attributes пишет null, MessageBox показывает element пустой и не все елементы добавляет в словарь. как можно это исправить и вывести весь словарь??

Answer 1
class Program
{
    private static string _xml = @"<?xml version='1.0' encoding='UTF-8'?>
                    <Head xmlns = 'http://www.sample-package.org'>
                        <Number>748</Number>
                        <Number_confirm>977</Number_confirm>
                        <Positions>
                            <Tare_id>2442</Tare_id>
                        </Positions >
                        <Positions>
                            <Product_id>168813</Product_id>
                        </Positions>
                    </Head>";
    static void Main(string[] args)
    {
        XElement doc = XElement.Parse(_xml);
        XNamespace ns = XNamespace.Get("http://www.sample-package.org");
        var N = doc.Element(ns + "Number").Value;
        var NC = doc.Element(ns + "Number_confirm").Value;
        var ID = doc.Elements(ns + "Positions").Last().Value;
        var dict = new Dictionary<string, string>();
        dict.Add(nameof(N), N);
        dict.Add(nameof(NC), NC);
        dict.Add(nameof(ID), ID);
    }
}
READ ALSO
Разбить решение задачки по потокам [закрыт]

Разбить решение задачки по потокам [закрыт]

Задачка: Создайте приложение, позволяющие численно рассчитать определенный интеграл, разбив его вычисление на несколько потоковВыберите...

208
C# - Симуляция ввода текста пользователем в консольное приложение

C# - Симуляция ввода текста пользователем в консольное приложение

Задача такова, на фоне работает консольное приложение, мое приложение при нажатии на кнопку симулирует ввод текста в этом консольном приложении,...

201
Как передать в С++ библиотеку указатель на объект из C# и затем получить данные обратно?

Как передать в С++ библиотеку указатель на объект из C# и затем получить данные обратно?

Дело такое: Написал несколько функций на С++ и хочу их использовать в C# коде, но не знаю как правильно объявить эти функции в C#

183
Как пролистать Panel через AutoScroll кнопкой?

Как пролистать Panel через AutoScroll кнопкой?

Подскажите, как при нажатии на кнопку пролистать Panel через AutoScroll, таким образом, чтобы пролистывание уходило в самый конец Panel

203