1) Значение element
не имеет значения.Чтобы получить числа, которые вы ищете, вы должны будете использовать element.InnerText
как в:
MessageBox.Show(string.Format("element:{0}", element.InnerText));
2) Затем в document.Add
-Statements вы пытаетесьполучить доступ к атрибутам, но нет никаких атрибутов на ваших элементах.
Примером атрибута может быть:
<Number MyAttribute="additionalInfo">67</Number>
3) У вас есть опечатка в одном из ваших document.Add
-Состояний.Вы случайно набрали документ s один раз.
4) Во втором цикле вы перебираете все элементы в корне (Head).Таким образом, вы входите в цикл 4 раза и каждый раз, когда получаете новый элемент, но вы пытаетесь добавить все значения в каждой итерации.Вы на самом деле хотите иметь список KeyValuePairs
, как показано ниже:
var root = doc.GetElementsByTagName("Head");
var documents = new List<KeyValuePair<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];
MessageBox.Show(string.Format("element:{0}", element.InnerText));
var document = new KeyValuePair<string, object>(element.Name, element.InnerText);
documents.Add(document);
}
}
Теперь словарь равен структуре, имеющейся в вашем xml: У объекта (Head) есть список KeyValuePairs («Number»)пары с "748", "Number_confirm" пары с "977" и т. д.)
Как следует из вашего комментария, если ваш xml может выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<Head xmlns="http://www.sample-package.org">
<Number>748</Number>
<Number_confirm>977</Number_confirm>
<Positions> <!-- Note: two numbers in one Positions-element -->
<Tare_id>2442</Tare_id>
<Product_id>168813</Product_id>
</Positions>
</Head>
.Затем вам нужно будет добавить еще один цикл, чтобы углубиться и изменить следующее:
..
var element = root[i].ChildNodes[j];
MessageBox.Show(string.Format("element:{0}", element.InnerText));
string numbers = string.Empty;
for(int z = 0; z < element.ChildNodes.Count; z++)
{
numbers += element.ChildNodes[z].InnerText + Environment.NewLine;
}
var document = new KeyValuePair<string, object>(element.Name, numbers);
documents.Add(document);
..
Все же я рекомендую вам создать класс со свойствами, подобными xml, чтобы вы могли загрузить внутренний и внутренний XMLраспечатайте / измените его по вашему желанию.