【问题标题】:Looping through an XML document and assigning data in C# variables循环遍历 XML 文档并在 C# 变量中分配数据
【发布时间】:2011-12-28 17:06:13
【问题描述】:

我有一个 XML 文件,它有几个这样的标签:

<sitecollection name="">
  <site name="">
    <maingroup name=""> 
       <group name=""> </group>
    </maingroup> 
   </site>
<sitecollection>

这个想法是遍历所有sitecollection 及其XML 文档中的子元素,并将信息保存在变量中。我遇到的问题是保存子元素及其属性。

到目前为止,我有以下代码:

class xmlreader
{
    public static void Main()
    {
        XDocument xdoc = XDocument.Load("xmldocument.xml");
        var result = new System.Text.StringBuilder();
        var lv1s = from lv1 in xdoc.Descendants("sitecollection")
                   select new
                   {
                       siecollection = lv1.Attribute("name").Value,
                       maingroup = lv1.Descendants("group")

                   };
        foreach (var lv1 in lv1s)
        {
            result.AppendLine(lv1.siecollection);
            foreach (var lv2 in lv1.maingroup)
                result.AppendLine("   " + lv2.Attribute("name").Value);
        }

    }
}

【问题讨论】:

  • 您遇到了什么问题?不确定您的问题是什么。
  • 您共享的代码不包含任何可以保存 XmlDocument 的内容。那部分被省略了吗?
  • 好吧,代码还没写完……我正在尝试读取xml文档并打印结果……

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


【解决方案1】:

如果您提供的示例 XML 准确无误,则问题可能是您没有 sitecollection 的结束标记。

我尝试了使用稍微不同的 XML 输入的代码(关闭了 sitecollection 标记,并向名称属性添加了一些值,以便在结果 StringBuilder 中收集一些东西),如下所示:

XDocument xdoc = XDocument.Parse(@"<sitecollection name=""collectionName"">
    <site name=""sitename"">
    <maingroup name=""maingroupname""> 
    <group name=""groupname""> </group>
    </maingroup> 
    </site>
    </sitecollection>
    ");

并且 result.ToString() 产生:“collectionName\r\n groupname\r\n”

【讨论】:

  • 对不起。正确的样本应该有 并且它们会在 元素下。
【解决方案2】:

把它带到你想去的地方:

  XmlReader reader = XmlReader.Create(@"C:\file.xml", null);
  StringBuilder result = new StringBuilder();
  while (reader.Read())
  {            
      if( reader.NodeType == XmlNodeType.Element)
      {
          if (reader.HasAttributes) 
          {
              result.AppendLine(reader.LocalName);
              reader.MoveToFirstAttribute();
              result.AppendLine("  " + reader.Value);                    
          }
       }                      
    }

【讨论】:

    猜你喜欢
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多