C# - 使用XSD进行XML验证 - 在列表框和树视图中显示结果

时间:2016-10-20 08:37:07

标签: c# xml validation listbox treeview

大家好!

我有以下用例:

我的Winform-App正在验证针对XSD的普通XML,并在列表框中显示错误(如果有的话)(这样可以正常工作)。除此之外,我将经过验证的XML加载到树视图中。

现在,我想要实现的是让用户能够双击列表框中的错误,然后树视图选择导致错误的相关元素。

我实际上有点困惑。我现在是错误的行号,但是我无法使用行号在树视图中选择相关节点。

Printcreen of Validation App Printscreen of XML

有人知道如何实现这个目标吗?

非常感谢任何暗示:)

亲切的问候

更新:

填写树视图的代码:

doc.Load(XMLDocPath);
XmlNodeTree root = new XmlNodeTree(0, doc.LastChild);
treeDGUXml.Nodes.Add(root);
FillTreeView(root.Nodes, doc.LastChild.ChildNodes);

方法:

private void FillTreeView(TreeNodeCollection c, XmlNodeList l)
{
  if (l == null)
  {
    return;
  }

  foreach (XmlNode e in l)
  {
    XmlNodeTree n = new XmlNodeTree(nRow, e);
    c.Add(n);
    FillTreeView(n.Nodes, e.ChildNodes);
  }

和班级:

public class XmlNodeTree : TreeNode
{
  private XmlNode mNode;
  public XmlNode Node
  {
    get { return mNode; }
  }

  public XmlNodeTree(int rownumber, XmlNode node)
  {
    mNode = node;
    if (node.NodeType == XmlNodeType.Text)
    {
      Text = node.InnerText;
    }
    else
    {
      Text = rownumber.ToString() + " - " + node.Name;
      nRow++;
    }

    if (node.Attributes != null)
    {
      foreach (XmlAttribute a in node.Attributes)
      {
        Text += " " + a.OuterXml;
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

非常感谢您的提示。我决定采用另一种没有树视图的方法。我将XML加载到具有适当颜色的richtext框中。这样我就可以选择相关的文字了。用户无法折叠xml结构,但现在这比没有好;)无论如何,谢谢您的建议! -