Необходимо получить значения из очень сложного XML файла в Windows форме C# - PullRequest
0 голосов
/ 07 мая 2020

У меня есть dataGridview1, в который я хочу добавить два столбца и заполнить значения из файла XML.

Значения, которые мне нужны для извлечения значений из XML Файл, имеют теги: «Имя», «Статус» и «IP». Они находятся внутри узлов 'item'.

Мне нужно сопоставить имя из XML File со столбцом dataGridview (columnName), и если оно совпадает, мне нужно поставить «Статус» и «IP», чтобы недавно добавленный столбец в dataGridView.

Файл XML кажется мне настолько сложным для извлечения данных. Я не могу использовать набор данных, потому что он выдает ошибку, что «элемент» используется во вложенной таблице дважды. Я пробовал использовать Xpath, но мне не удалось создать строку Xpath, необходимую для получения данных из XML.

Любая помощь приветствуется. Спасибо.

Вот ссылка на XML файл, из которого мне нужны данные: https://net-perm.s3.amazonaws.com/test.xml

XmlDocument doc = new XmlDocument();
            doc.LoadXml(CUCMReply);
Int ColumnIndex;            //Known value
String ColumnName;          //Known value

                dataGridView1.Columns.Add(columnName + "RegisterStatus", columnName + "RegisterStatus"); 
                dataGridView1.Columns.Add(columnName + "IP", columnName + "IP");            

            

1 Ответ

0 голосов
/ 07 мая 2020

Если вы хотите написать выражение XPath, вы можете использовать (local-name(), чтобы обойти проблемы с пространством имен):

//*[local-name()="item"]/*[local-name()="Name"][contains(.,"columnName")]/following::*[local-name()="Status" and ancestor::*[2][local-name()="CmDevices"] or local-name()="IP"][position()<3]

Где "columnName" - это значение, которое вы должны сопоставить. Для каждого совпадения будет выведено 2 узла: статус и IP.

...