Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#和WPF通过编程方式计算父XML节点中的子XML节点数量?_C#_Xml_Wpf_Xaml - Fatal编程技术网

如何使用C#和WPF通过编程方式计算父XML节点中的子XML节点数量?

如何使用C#和WPF通过编程方式计算父XML节点中的子XML节点数量?,c#,xml,wpf,xaml,C#,Xml,Wpf,Xaml,我编写了一个WPF应用程序,它是两级主细节,并使用XML文件作为数据源。下面我展示了这个XML文件的内容。此文件放在项目中包含的数据文件夹中,文件本身也包含在项目中。此文件的名称为Books.xml <?xml version="1.0" encoding="utf-8" ?> <Books xmlns=""> <Category name="Computer Programming"> <Book> <Author&

我编写了一个WPF应用程序,它是两级主细节,并使用XML文件作为数据源。下面我展示了这个XML文件的内容。此文件放在项目中包含的数据文件夹中,文件本身也包含在项目中。此文件的名称为Books.xml

<?xml version="1.0" encoding="utf-8" ?>
<Books xmlns="">
  <Category name="Computer Programming">
    <Book>
      <Author>H. Schildt</Author>
      <Title>C# 4.0 The Complete Reference</Title>
    </Book>
  </Category>
  <Category name="Art Editions">
    <Book>
      <Author>M. Cervantes</Author>
      <Title>The Ingenious Gentleman Don Quixote of La Mancha </Title>
    </Book>
    <Book>
      <Author>P. Ronsard</Author>
      <Title>Les Amours</Title>
    </Book>
  </Category>
</Books>

希尔德
C#4.0完整参考
塞万提斯先生
拉曼查的天才绅士唐吉诃德
龙沙
爱情
我需要计算每个类别节点中图书节点的数量,并存储结果。如何实现这一点?

您可以使用LINQ to XML实现这一点,例如:

var doc = XDocument.Parse("put_path_to_xml_file_here.xml");
//loop through all <Category>
foreach (var category in doc.Root.Elements("Category"))
{
    //count <Book> elements within current <Category> element
    var numberOfBooks = category.Elements("Book").Count();
    //print the category name and the number of book elements
    Console.WriteLine((string)category.Attribute("name") + " : " + numberOfBooks);
}
var doc=XDocument.Parse(“将路径放在xml文件中”\u here.xml”);
//循环所有
foreach(doc.Root.Elements(“类别”)中的变量类别)
{
//对当前元素中的元素进行计数
var numberOfBooks=category.Elements(“Book”).Count();
//打印类别名称和书籍元素数
Console.WriteLine((string)category.Attribute(“name”)+:“+numberOfBooks);
}

为什么不使用xmldocument将项目加载到视图模型中,然后简单地计算您拥有的元素?这比在xaml中执行要容易得多。。。您还可以将xml反序列化为列表,然后简单地使用list.Count.Thank,Amit。但是我的应用程序不是MVVM,所以我没有viewmodel。我是XML的新手,我不知道如何在列表实例中反序列化它。伙计们,帮帮我!我真的迷路了。非常感谢你,哈。你帮了我,不客气。我希望您可以从这个基本示例开始,利用您在LINQ到XML方面的知识,不要忘记接受答案。抽出你的时间来读这篇文章。请成为合作论坛成员。谢谢