Beispiel #1
0
        private void RecurseAndAssignNodes( XmlNode elem )
		{
			string attrs = string.Empty;
			XmlTreeNode addedNode = null;

			if ( elem.NodeType == XmlNodeType.Element )
			{
				foreach ( XmlAttribute attr in elem.Attributes )
				{
					attrs += " " + attr.Name + "=\"" + attr.Value + "\"";
				}
			}

			if ( elem.Equals( document.DocumentElement ) )
			{
				addedNode = new XmlTreeNode( "<" + elem.Name + attrs + ">", elem );
				Nodes.Add( addedNode );
				InnerXmlTreeView.CurrentNode = addedNode;
				Nodes.Add( new XmlTreeNode( "</" + elem.Name + ">", null ) );
			}
			else if ( elem.HasChildNodes && elem.ChildNodes[0].NodeType == XmlNodeType.Text )
			{
				addedNode = new XmlTreeNode( "<" + elem.Name + attrs + ">" + elem.InnerText + "</" + elem.Name + ">", elem );
				InnerXmlTreeView.CurrentNode.Nodes.Add( addedNode );
				InnerXmlTreeView.CurrentNode = addedNode;
			}
			else if ( elem is XmlElement && ( (XmlElement) elem ).IsEmpty )
			{
				addedNode = new XmlTreeNode( "<" + elem.Name + attrs + "/>", elem );
				InnerXmlTreeView.CurrentNode.Nodes.Add( addedNode );
				InnerXmlTreeView.CurrentNode = addedNode;
			}
			else
			{
				addedNode = new XmlTreeNode( "<" + elem.Name + attrs + ">", elem );
				InnerXmlTreeView.CurrentNode.Nodes.Add( addedNode );
				InnerXmlTreeView.CurrentNode = addedNode;
				InnerXmlTreeView.CurrentNode.Parent.Nodes.Add( new XmlTreeNode( "</" + elem.Name + ">", null ) );
			}

			foreach ( XmlNode child in elem.ChildNodes )
			{
				if ( child.NodeType == XmlNodeType.Element )
				{
					RecurseAndAssignNodes( child );
				}
				else if ( child.NodeType == XmlNodeType.Comment )
				{
					InnerXmlTreeView.CurrentNode.Nodes.Add( new XmlTreeNode( child.OuterXml, child ) );
				}
			}

			if ( InnerXmlTreeView.CurrentNode.Parent != null )
			{
				InnerXmlTreeView.CurrentNode = InnerXmlTreeView.CurrentNode.Parent;
			}
		}
		private bool IsNodeVisible (XmlNode node)
		{
			// if node list is empty then we process whole document
			if (xnl == null) 
				return true;
		    
			// walk thru the list
			foreach (XmlNode xn in xnl) {
				if (node.Equals (xn)) 
					return true;
			}
		    
			return false;
		}