【问题标题】:Getting data to listview from xml childnotes从 xml childnotes 获取数据到 listview
【发布时间】:2020-09-14 14:14:37
【问题描述】:

我正在尝试将所有标签类型值都添加到 listview。 不太清楚如何定位他们。

<Folder>
   <Ex>
      <Name>test1</Name>
      <Tags>
         <TagEx>
            <Name>Subject1</Name>
            <Tag Type="Maximum" Score="80" ExxTag="no">SUB1</Tag>
            <Tag Type="Average" Perc="31" ExxTag="no">SUB1</Tag>
            <Tag Type="Status" Results="2" ExxTag="no">SUB1</Tag>
         </TagEx>
      </Tags>
   </Ex>
   <Ex>
      <Name>test2</Name>
      <Tags>
         <TagEx>
            <Name>Subject2</Name>
            <Tag Type="Maximum" Score="100" ExxTag="no">SUB2</Tag>
            <Tag Type="Average" Perc="20" ExxTag="no">SUB2</Tag>
            <Tag Type="Status" Results="0" ExxTag="no">SUB2</Tag>
         </TagEx>
      </Tags>
   </Ex>
</Folder>

尝试使用 where x 等将它们收集到数组中,但失败了,只会出错。 我对从 xml 获取数据非常陌生。

编辑:澄清希望将它们放入一行或至少放入数组中,以便我可以将它们设置为一行(列表视图),如下所示:Ex Name, TagEx Name, Tag类型、分数、ExxTag、标签类型、Perc、ExxTag、标签类型、结果、ExxTag。

感谢您的帮助!

【问题讨论】:

  • 你也想得到TagEx-&gt;Name吗?
  • 是的,我也想要那个 =)

标签: c# xml


【解决方案1】:

我建议您使用此示例来初始化您将声明的类对象列表(TagEx 类或类似的东西)。
下面是一个带有System.Xml.Linq 的示例,说明如何从此 XML 中提取本地名称、值和属性:

static void Main(string[] args)
{
    var xmldoc = System.Xml.Linq.XDocument.Load(@"YOUR PATH");

    foreach (var name in xmldoc.Descendants("TagEx").Elements()
                        .Select(x => new { Name = x.Name, Value = x.Value, Type=x.Attribute("Type")
                        , Score = x.Attribute("Score"),ExxTag=x.Attribute("ExxTag")}))
    {
        // Tag Name
        Console.WriteLine(name.Name.LocalName);
        // Tag Value
        Console.WriteLine(name.Value);
        // Type Attribute value
        Console.WriteLine(name.Type);
        // Score Attribute value
        Console.WriteLine(name.Score);
        // ExxTag Attribute value
        Console.WriteLine(name.ExxTag);
    }

    Console.ReadLine();
}

输出:

名称 Subject1 Tag SUB1 Type="Maximum" Score="80" ExxTag="no" Tag SUB1 类型="平均" ExxTag="no" 标记 SUB1 类型="状态" ExxTag="no" 名称 Subject2 标记 SUB2 类型="最大" 分数="100" ExxTag="no" 标记 SUB2 Type="Average" ExxTag="no" Tag SUB2 Type="Status" ExxTag="no"

【讨论】:

  • 这个问题是,如果我用它来获取所有值,它会在其中得到很多空值。我需要从每个列表中获取所有 3 个标记类型值。也喜欢 Perc 和 Results。制作了一个分拣机来取出空瓶,但这在添加到列表时会导致进一步的问题。希望将它们排成一行,例如:Ex Name、TagEx Name、Tag Type、Score、ExxTag、Tag Type、Perc、ExxTag、Tag Type、Results、ExxTag。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
相关资源
最近更新 更多