【发布时间】:2015-09-21 08:11:05
【问题描述】:
我有一个与此类似的设置的 xml 文档:
<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> 元素。如何在循环中包含这些元素?
【问题讨论】:
-
是的,使用递归。
-
附带说明,LINQ to XML 通常让生活变得更简单。
XmlDocument绝对可以解决您的问题,但是如果您可以使用 LINQ to XML 代替,那将是单行... -
对于 xml 递归,我喜欢以下网站中用于将 xml 添加到树视图的代码。之前多次使用该代码。 stackoverflow.com/questions/28976601/…
标签: c# xml xmldocument