Пример #1
0
        private string GetXpathByNode(TreeNode treeNode)
        {
            StringBuilder     sbXpath = new StringBuilder();
            NodeExtentionData nde     = new NodeExtentionData();
            TreeNode          n       = treeNode;

            if (n.Tag is NodeExtentionData == false)
            {
                return(string.Empty);
            }
            do
            {
                nde = (NodeExtentionData)n.Tag;
                if (string.IsNullOrEmpty(nde.XPathPart))
                {
                    return(string.Empty);
                }
                sbXpath.Insert(0, "/" + nde.XPathPart);
                n = n.Parent;
            } while (n != null);
            return(sbXpath.ToString());
        }
Пример #2
0
        private void itmCopyValueToolStripMenuItem_Click(object sender, EventArgs e)
        {
            NodeExtentionData ned = (NodeExtentionData)twSourceXml.SelectedNode.Tag;

            Clipboard.SetDataObject(ned.NodeValue);
        }
Пример #3
0
        TreeNode XmlNodeToTreeNode(XPathNavigator xn, int xPathIndex)
        {
            //XPathNodeIterator nList = xn.Select("/");
            //xn.SelectChildren(XPathNodeType.All);
            string            xnValue = "";
            TreeNode          tn      = new TreeNode();
            NodeExtentionData ned     = new NodeExtentionData();

            switch (xn.NodeType)
            {
            case XPathNodeType.All:
                break;

            case XPathNodeType.Attribute:
                ned    = new NodeExtentionData(xn.Name, xn.Value, xn.NodeType);
                tn.Tag = ned;
                break;

            case XPathNodeType.Comment:
                /*tn.Text = xn.OuterXml;
                 * tn.ForeColor = Color.Gray;*/
                ned    = new NodeExtentionData("", xn.OuterXml, xn.NodeType);
                tn.Tag = ned;

                /*tn.Text = ned.ToString();
                *  tn.ForeColor = ned.Color;*/
                break;

            case XPathNodeType.Element:
                //XPathNodeIterator nList = xn.SelectChildren(XPathNodeType.Text);

                /*if (nList.MoveNext())
                 *  xnValue = nList.Current.Value;*/
                XPathNodeIterator nList = null;
                XPathNavigator    nav   = null;

                /*nav = xn.Clone().CreateNavigator();
                 * if (nav.MoveToFirstNamespace())
                 *  do
                 *  {
                 *      tn.Nodes.Add(XmlNodeToTreeNode(nav, -1));
                 *  } while (nav.MoveToNextNamespace());*/

                nav = xn.Clone().CreateNavigator();
                if (nav.MoveToFirstAttribute())
                {
                    do
                    {
                        //TreeNode tna = new TreeNode();
                        tn.Nodes.Add(XmlNodeToTreeNode(nav, -1));

                        /*tna.Text = nav.OuterXml;
                         * tna.Tag = "@" + nav.Name;
                         * tna.ForeColor = Color.MidnightBlue;*/

                        //Moved to Case Attribute:

                        /*tn.Nodes.Add(tna);
                         * ned = new NodeExtentionData(nav.Name, nav.Value, nav.NodeType);
                         * tna.Tag = ned;
                         * tna.Text = ned.ToString();
                         * tna.ForeColor = ned.Color;*/
                    } while (nav.MoveToNextAttribute());
                }

                nList = xn.SelectChildren(XPathNodeType.All);
                while (nList.MoveNext())
                {
                    if (nList.Current.NodeType == XPathNodeType.Text)
                    {
                        xnValue = nList.Current.Value;
                    }
                    else if (nList.Current.NodeType == XPathNodeType.Comment)
                    {
                        tn.Nodes.Add(XmlNodeToTreeNode(nList.Current, -1));
                    }
                    else
                    {
                        int xpi = GetXpathIndex(nList.Current);
                        tn.Nodes.Add(XmlNodeToTreeNode(nList.Current, xpi));
                    }
                }
                ned = new NodeExtentionData(xn.Name, xnValue, xPathIndex, xn.NodeType);

                /*tn.ForeColor = Color.Brown;
                 * tn.Text = xn.Name + " >> " + xnValue;
                 * tn.Tag = xn.Name + (xPathIndex > 0 ? "[" + xPathIndex.ToString() + "]" : "");*/
                /*tn.ForeColor = ned.Color;
                *  tn.Text = ned.ToString();*/
                tn.Tag = ned;
                break;

            case XPathNodeType.Namespace:
                ned    = new NodeExtentionData(xn.Name, xn.Value, xn.NodeType);
                tn.Tag = ned;
                break;

            case XPathNodeType.ProcessingInstruction:
                /*tn.Text = xn.OuterXml;
                 * tn.ForeColor = Color.Gray;*/
                ned = new NodeExtentionData("", xn.OuterXml, xn.NodeType);

                /*tn.Text = ned.ToString();
                *  tn.ForeColor = ned.Color;*/
                tn.Tag = ned;
                break;

            case XPathNodeType.Root:
                break;

            case XPathNodeType.SignificantWhitespace:
                break;

            case XPathNodeType.Text:
                break;

            case XPathNodeType.Whitespace:
                break;

            default:
                break;
            }
            tn.Text      = ned.ToString();
            tn.ForeColor = ned.Color;

            return(tn);
        }