示例#1
0
        private void load()
        {
            try
            {
                GridBuilder   builder = new GridBuilder();
                GridCellGroup root    = new GridCellGroup();

                //XmlDocument xmldoc = _editor.XmlEditor.Text.ToXmlDocument();
                XmlDocument xmldoc = new XmlDocument();
                //do this to remove #whitespace nodes
                xmldoc.LoadXml(_editor.XmlEditor.Text.ToXmlDocument().OuterXml);

                builder.ParseNodes(root, null, xmldoc.ChildNodes);
                _xmlGridView.Cell = root;

                _lblErrors.Visibility = Visibility.Collapsed;
            }
            catch (Exception ex)
            {
                _xmlGridView.Cell = null;

                _lblErrors.Content    = "Errors in XML document: " + ex.Message;
                _lblErrors.Visibility = Visibility.Visible;
            }
        }
示例#2
0
        internal void InitializeForm()
        {
            InitializeComponent();
            LookFeelUtil.SetLookAndFeel(contentContextMenuStrip);
            SetLanguage();

            Form1 form = (Form1)Owner;

            String            filename    = ProgramUtil.GetFilenameTabPage(form.pagesTabControl.SelectedTabPage);
            CustomRichTextBox pageTextBox = ProgramUtil.GetPageTextBox(form.pagesTabControl.SelectedTabPage);
            String            xmlString   = pageTextBox.Text;

            //XmlUrlResolver resolver = new XmlUrlResolver();
            //resolver.Credentials = CredentialCache.DefaultCredentials;
            XmlDocument       xmldoc   = new XmlDocument();
            XmlReaderSettings settings = new XmlReaderSettings
            {
                IgnoreWhitespace = true,
                //XmlResolver = resolver,
                IgnoreComments = true,
                DtdProcessing  = DtdProcessing.Parse                                 //ProhibitDtd = false
            };
            StringReader reader = new StringReader(xmlString);
            XmlReader    render = !String.IsNullOrEmpty(filename) ? XmlReader.Create(reader, settings, filename) : XmlReader.Create(reader, settings);

            try
            {
                xmldoc.Load(render);
            }
            catch (Exception exception)
            {
                String error = String.Format(LanguageUtil.GetCurrentLanguageString("Error", Name), exception.Message);
                WindowManager.ShowAlertBox(form, error);

                reader.Dispose();
                render.Close();
                return;
            }

            reader.Dispose();
            render.Close();

            GridBuilder   builder  = new GridBuilder();
            GridCellGroup xmlgroup = new GridCellGroup {
                Flags = GroupFlags.Overlapped | GroupFlags.Expanded
            };

            builder.ParseNodes(xmlgroup, null, xmldoc.ChildNodes);
            root = new GridCellGroup();
            root.Table.SetBounds(1, 2);
            root.Table[0, 0] = new GridHeadLabel {
                Text = "XML"
            };
            root.Table[0, 1] = xmlgroup;
            xmlGridView.Cell = root;

            xmlGridView.Font      = pageTextBox.Font;
            xmlGridView.ForeColor = pageTextBox.ForeColor;
            xmlGridView.BackColor = pageTextBox.BackColor;
        }
示例#3
0
文件: Form1.cs 项目: semyonc/xmlgrid
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();

            dialog.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                XmlDataDocument   xmldoc   = new XmlDataDocument();
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.IgnoreWhitespace = true;
                settings.ProhibitDtd      = false;
                XmlUrlResolver resolver = new XmlUrlResolver();
                resolver.Credentials = CredentialCache.DefaultCredentials;
                settings.XmlResolver = resolver;
                XmlReader render = XmlReader.Create(dialog.FileName, settings);
                try
                {
                    try
                    {
                        xmldoc.Load(render);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(this, ex.Message, "Parse Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }
                finally
                {
                    render.Close();
                }
                GridBuilder builder = new GridBuilder();
                if (xmlGrid.ShowColumnHeader)
                {
                    GridCellGroup xmlgroup = new GridCellGroup();
                    xmlgroup.Flags = GroupFlags.Overlapped | GroupFlags.Expanded;
                    builder.ParseNodes(xmlgroup, null, xmldoc.ChildNodes);
                    GridCellGroup root = new GridCellGroup();
                    root.Table.SetBounds(1, 2);
                    root.Table[0, 0]      = new GridHeadLabel();
                    root.Table[0, 0].Text = dialog.FileName;
                    root.Table[0, 1]      = xmlgroup;
                    xmlGrid.Cell          = root;
                }
                else
                {
                    GridCellGroup root = new GridCellGroup();
                    builder.ParseNodes(root, null, xmldoc.ChildNodes);
                    xmlGrid.Cell = root;
                }
            }
        }
示例#4
0
        public void SetText(string fragment)
        {
            fragment = fragment.Trim();
            if (fragment.StartsWith("<"))  //performance optimization, gridview will take long time if it is no xml document
            {
                if (XSConfiguration.Instance.Config.AlwaysPrettyprintFragments)
                {
                    try
                    {
                        _edtFragment.Text = PrettyPrint.Execute(fragment, true, false, true);
                    }
                    catch
                    {
                        _edtFragment.Text = fragment;
//                    MessageBox.Show(Application.Current.MainWindow, "Cannot prettyprint selected text:\n" + e.Message,
//                        "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
                else
                {
                    _edtFragment.Text = fragment;
                }

                try
                {
                    GridBuilder   builder = new GridBuilder();
                    GridCellGroup root    = new GridCellGroup();

                    //XmlDocument xmldoc = fragment.ToXmlDocument();
                    XmlDocument xmldoc = new XmlDocument();
                    //do this to remove #whitespace nodes
                    xmldoc.LoadXml(fragment.ToXmlDocument().OuterXml);

                    builder.ParseNodes(root, null, xmldoc.ChildNodes);
                    _gridFragment.Cell = root;
                    _gridFragment.FullExpand();
                }
                catch (Exception)
                {
                    _gridFragment.Cell = null;
                }
            }
            else
            {
                _edtFragment.Text  = fragment;
                _gridFragment.Cell = null;
            }

            updateFolding();
        }
示例#5
0
        private void ExpandCell(GridCell cell, int level = 1)
        {
            GridCellGroup cellGroup = (GridCellGroup)cell;

            _xmlGridView.Expand(cellGroup);

            if (level > 1)
            {
                level--;

                for (int i = 0; i <= cellGroup.Table.Height - 1; i++)
                {
                    GridCell tableCell = cellGroup.Table[0, i];
                    if (tableCell.IsGroup)
                    {
                        ExpandCell(tableCell, level);
                    }
                }
            }
        }