【问题标题】:Read Complex XML阅读复杂的 XML
【发布时间】:2011-12-28 03:44:26
【问题描述】:

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

尤其是像IdList里面有任何childNode的childnode。

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 ?

【问题讨论】:

  • 你的 xml 并不复杂.. google for linq to xml
  • 您能否发布您尝试使用的代码,以便人们更好地理解您的问题。也请不要用这么多!!!! ;)
  • 这不是我之前告诉过你的同一个 XML 不复杂吗?请显示您正在尝试的代码并告诉我们您遇到的具体问题。
  • @parapurarajkumar : ling to xml ,它支持 C# 2.0 吗?
  • @FrancisUpton : Sorry for "!!!" , next time i will paste code on the question , but i already comfirm that i used XMLDocument`

标签: c# xml .net-2.0 linq-to-xml


【解决方案1】:

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

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

【讨论】:

  • var 在 C# 2.0 (VS2005) 中不受支持。我的代码(上面的代码)怎么样,我好吗?或者我需要更改您的代码。谢谢……
  • programListidList 测试后一无所获。
  • 它在我的测试中运行。我认为你有命名空间。
  • 如果你删除你的命名空间,它可以运行。所以,你必须在代码中添加你的命名空间。
【解决方案2】:

使用 linq 到 xml。

http://msdn.microsoft.com/en-us/library/bb397976.aspx

示例:

foreach(var node in doc.Elements("idList").Elements("id").Elements("uid")) 

【讨论】:

【解决方案3】:

我会使用以下 linq-to-xml 查询来简化您的代码。

var programs = from program in 
               doc.Root.Element("programList").Descendants("program")
               select program.Value;

var ids = from id in doc.Root.Element("idList").Descendants("id")
          select new
          {
               uid = (string)id.Element("uid"),
               idType = (string)id.Element("idType"),
               idNumber = (string)id.Element("idNumber"),
               idCountry = (string)id.Element("idCountry")
          };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多