У меня есть документ XML с настройкой похожа на это:Перебор всех узлов в XML-файл с C#
<invoice>
<IssueDate>2015-09-07</IssueDate>
<InvoiceType>380<InvoiceType>
<AccountingSupplierParty>
<Party>
<EndpointID></EndpointID>
<PartyName>
<Name>Company test</Name>
</PartyName>
</Party>
</AccountingSupplierParty>
</invoice>
Это лишь маленький кусочек всего XML-документ, просто чтобы показать, как выглядит файл.
Я хотел бы проверить, что все элементы также видят, имеют ли они пустые значения, такие как EndpointID в этом примере (мне нужно заменить пустые значения на NA).
Это то, что я до сих пор:
public static void AddToEmptyElements()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("testXml.xml");
XmlNodeList nodes = xmlDoc.DocumentElement.ChildNodes;
foreach (XmlNode node in nodes)
{
Console.WriteLine(node.Name);
}
}
Однако, этот код будет только перебрать Чайлдс корневого узла и не все внук (или больших внук), такие как <Party>
и <EndpointID>
элементов , Как включить эти элементы в цикл?
Да, конечно, используйте рекурсию. –
проверьте это http://stackoverflow.com/questions/2915294/iterating-through-all-nodes-in-xml-file – Gaby
Как примечание, LINQ to XML обычно делает жизнь намного проще. Ваша проблема определенно разрешима с помощью 'XmlDocument', но если вы можете использовать LINQ to XML, это будет однострочный ... –