C# 如何从比较XML中筛选结果&;XSD?
我将WPF中的一个XML和一个XSD集合与TreeViewItem进行比较。 我终于得到了以红色显示的缺失结果。 但是如何将XSD集合的结果过滤到列表框中,以便它只能显示红色的行(值)C# 如何从比较XML中筛选结果&;XSD?,c#,xml,wpf,C#,Xml,Wpf,我将WPF中的一个XML和一个XSD集合与TreeViewItem进行比较。 我终于得到了以红色显示的缺失结果。 但是如何将XSD集合的结果过滤到列表框中,以便它只能显示红色的行(值) private void CompareTrees(ItemCollection xml, ItemCollection xsd, List<string> path) { foreach (TreeViewItem tvixsd in xsd.OfType<TreeVi
private void CompareTrees(ItemCollection xml, ItemCollection xsd, List<string> path)
{
foreach (TreeViewItem tvixsd in xsd.OfType<TreeViewItem>())
{
path.Add(tvixsd.Header.ToString());
if (tvixsd.HasItems)
{
CompareTrees(xml, tvixsd.Items, path);
}
else
{
TreeViewItem res = xml.OfType<TreeViewItem>().FirstOrDefault();
foreach (var point in path.Skip(1))
{
res = res.Items.OfType<TreeViewItem>().FirstOrDefault(i => i.Header.ToString() == point);
if (res == null)
{
treeViewCom.Items.Add(res);
tvixsd.Foreground = Brushes.Red;
break;
}
if (!res.HasItems)
{
break;
}
}
}
if (path.Count != 0)
{
path.RemoveAt(path.Count - 1);
}
}
}
private void比较对象(ItemCollection xml、ItemCollection xsd、列表路径)
{
foreach(xsd.OfType()中的TreeViewItem tvixsd)
{
Add(tvixsd.Header.ToString());
如果(tvixsd.HasItems)
{
比较对象(xml、tvixsd.Items、path);
}
其他的
{
TreeViewItem res=xml.OfType().FirstOrDefault();
foreach(路径中的变量点。跳过(1))
{
res=res.Items.OfType().FirstOrDefault(i=>i.Header.ToString()==point);
如果(res==null)
{
treeViewCom.Items.Add(res);
前景=画笔。红色;
打破
}
如果(!res.HasItems)
{
打破
}
}
}
如果(path.Count!=0)
{
path.RemoveAt(path.Count-1);
}
}
}
谢谢设置
项目集合的过滤器
属性
:
xsd.Filter = (obj) =>
{
TreeViewItem tvi = obj as TreeViewItem;
return tvi != null && tvi.Foreground == Brushes.Red;
};
对哪些项集合排序?xsd项集合在UI中的显示位置和方式?treeviews用于xml和xsd文件以及listbox的结果。您是指排序或筛选吗?我或其他人是否应该知道“tvixsd错误”实际上意味着…?我的意思是,当我从代码中用tvi更改tvixsd时,我的if会出错(!res.HasItems)“对象引用未设置为对象的实例。'res为null。“更改tvixsd?我没有建议这样做。在foreach(xsd.OfType()中的TreeViewItem tvixsd)循环后添加我的代码。是否确实有前景为红色的任何项目?应用筛选器时仅显示这些项目。