使用c#循环遍历xml文件中的所有节点

我有一个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()

上一篇:shader画圆利用smoothstep函数抗锯齿


下一篇:TinyXML2的简单使用