如何通过比较XML和XSD来过滤结果?



我正在将WPF中的一个XML和一个XSD集合与TreeViewItem进行比较。 我终于得到了以红色显示的缺失结果。 但是如何将XSD集合中的结果过滤到列表框中,以便它只能显示红色的行(值(?

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);
}
}
}

谢谢

设置ItemsCollectionFilter属性:

xsd.Filter = (obj) =>
{
TreeViewItem tvi = obj as TreeViewItem;
return tvi != null && tvi.Foreground == Brushes.Red;
};

最新更新