我有一个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>元素.如何在循环中包含这些元素?
解决方法:
我现在不在一个测试代码的环境中,但是不可能编写一个递归方法来循环到节点的下游吗?
像这样的东西(未经测试的代码):
private static void handleNode(XmlNode node)
{
if(node.HasChildNodes)
{
foreach(XmlNode child in node.ChildNodes)
{
handleNode(child);
}
}
else
Console.WriteLine(node.Name);
}
然后调用此方法代替您的Console.WrintLine()