Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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# 以表格格式显示XML_C#_Wpf - Fatal编程技术网

C# 以表格格式显示XML

C# 以表格格式显示XML,c#,wpf,C#,Wpf,我正在研究一种小工具。它将接收各种xml字符串作为输入。我想做的是将xml(我们可以假设它是格式良好的)转换为表格格式 我的第一个想法是使用WPF数据网格。我尝试了以下方法: string xmlString = @"<?xml version=""1.0"" encoding=""utf-8"" ?> <Movies xmlns=""""> <Movie Name=""Seven Samurai"" Id=""1

我正在研究一种小工具。它将接收各种xml字符串作为输入。我想做的是将xml(我们可以假设它是格式良好的)转换为表格格式

我的第一个想法是使用WPF数据网格。我尝试了以下方法:

string xmlString = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
            <Movies xmlns="""">
              <Movie Name=""Seven Samurai"" Id=""101"" Director=""Akira Kurosawa"">
                   <Comment Value=""1""/>
              </Movie>
              <Movie Name=""Happy Together"" Id=""102"" Director=""Wong Kar Wai"">
                   <Comment Value=""2""/>
              </Movie>
              <Movie Name=""Shoot The Piano Player"" Id=""103"" Director=""Francois Truffaut"">
                   <Comment Value=""3""/>
              </Movie>
              <Movie Name=""Roshomon"" Id=""104"" Director=""Akira Kurosawa"">
                   <Comment Value=""4""/>
              </Movie>
              <Movie Name=""Dead Man"" Id=""105"" Director=""Jim Jarmusch"">
                   <Comment Value=""5""/>
              </Movie>
              <Movie Name=""Children of Heaven"" Id=""106"" Director=""Majid Majidi"">
                   <Comment Value=""6""/>
              </Movie>
            </Movies>";

var sr = new StringReader(xmlString);
var dataSet = new DataSet();
dataSet.ReadXml(sr);
_dataGrid.ItemsSource = dataSet.Tables[0].DefaultView;
string xmlString=@”
";
var sr=新的StringReader(xmlString);
var数据集=新数据集();
ReadXml(sr);
_dataGrid.ItemsSource=dataSet.Tables[0].DefaultView;
这将填充数据网格,但只显示父行。子元素不会出现。这是因为这些元素被放入数据集的另一个表(dataSet.Tables[1])

我只需要以表格格式只读显示xml。一些排序/过滤功能会很好,但我不知道如何(或者是否可能)以合理的父子格式将数据集中的所有表放在数据网格中

我事先不知道xml的格式,所以我正在寻找一种尽可能通用的解决方案


也许DataGrid不是实现这一点的理想控件?

您可以使用xslt转换迭代节点以转换为表格式

我不确定DataGrid是否支持它,但您可以尝试在两个表之间添加关系,以查看DataGrid是否以父子格式显示它。否则,您可能需要手动反规范化数据(这将是一个简单的Linq查询)。@DStanley我明白了。我想我可以添加一段关系,但这只是一个例子。我不会预先知道我将使用哪些类型的xml作为输入,因此在必要时,我似乎无法以通用方式添加这些关系(除非我遗漏了一些内容)。谢谢。你有我如何做到这一点的示例吗,也许是使用原始帖子中的示例xml?