C# 读取复杂的XML

C# 读取复杂的XML,c#,xml,.net-2.0,linq-to-xml,C#,Xml,.net 2.0,Linq To Xml,我很难从xml中读取!我认为XMLDocument会有所帮助,但我不知道如何从childNode中的每个元素中获取值 特别是,内部有任何childnode的childnode类似于IdList XML格式: <sdnEntry> <programList> <program>SDNT</program> </programList> <idList> <id> <uid>6028

我很难从xml中读取!我认为XMLDocument会有所帮助,但我不知道如何从childNode中的每个元素中获取值

特别是,内部有任何childnode的childnode类似于IdList

XML格式:

 <sdnEntry>

<programList>
  <program>SDNT</program>
</programList>

<idList>
  <id>
    <uid>6028</uid>
    <idType>NIT #</idType>
    <idNumber>900106267-0</idNumber>
    <idCountry>Colombia</idCountry>
  </id>
  <id>
    <uid>6029</uid>
    <idType>N0T #</idType>
    <idNumber>900106267-1</idNumber>
    <idCountry>Colombian</idCountry>      
  </id>
</idList>
</sdnEntry>
代码:

XmlDocument doc = new XmlDocument();
doc.Load(@"D:\SDN1.xml");

XmlElement root = doc.DocumentElement;                

XmlNodeList sdnEntryNodeList = root.GetElementsByTagName("sdnEntry"); 

foreach (XmlNode sdnNode in sdnEntryNodeList)
{
    for (int row = 0; row < sdnEntryNodeList.Count; row++)
    {
        XmlNodeList programListNodeList = sdnNode["programList"].GetElementsByTagName("program");

        foreach (XmlNode programNode in programListNodeList)
        {
            program = programNode.InnerText;
        }

        XmlNodeList idListNodeList = element["idList"].GetElementsByTagName("id");

        foreach (....)
        {

        }
     }       

}
上面的代码,好吗?否则,我会接受你的所有建议,请评论

如何在复杂的XML中读取programList和idList?

使用LINQtoXML

样本:


如果您想使用XMLDocument,这里有一个示例

var programList = doc.SelectNodes("/sdnEntry/programList/program");
var idList = doc.SelectNodes("/sdnEntry/idList/id");

我将使用以下linq到xml查询简化您的代码

var programs=从中的程序 doc.Root.ElementprogramList.后代程序 选择program.Value; var id=从doc.Root.ElementidList.degenantsid中的id开始 选择新的 { uid=stringid.Elementuid, idType=stringid.ElementidType, idNumber=stringid.ElementidNumber, idCountry=stringid.ElementidCountry };
您的xml并不复杂。。google for linq to xmlCan您可以发布您试图使用的代码,以便人们更好地理解您的问题。也请不要用那么多;这不是我以前告诉过你的XML不复杂吗?请显示您正在尝试的代码,并告诉我们您遇到了什么具体问题。@parapurajkumar:ling to xml,它支持C2.0吗?@FrancisUpton:抱歉,下次我会在这个问题上粘贴代码,但我已经确认我使用了XMLDocument `使用linq到xml,它是否支持C2.0,VS2005它不是.NET2.0。但是,让ling在.NET2.0中运行有一些变通方法,而不是黑客。查看此链接或您可以使用其他方法吗?黑客对我不好。因为C 2.0 VS2005中不支持商业…var的i developer软件。我上面的代码怎么样,我好吗?或者我需要更改您的代码。谢谢…程序列表和idList在测试后什么都没有得到。它在我的测试中运行。我想你有名称空间。如果你删除你的名称空间,它可以运行。因此,必须在代码中添加名称空间。
var programList = doc.SelectNodes("/sdnEntry/programList/program");
var idList = doc.SelectNodes("/sdnEntry/idList/id");