using System; using System.IO; using System.Collections.Generic; using System.Xml; using Mvp.Xml.XInclude; public class Test { static void read_element (XmlTextReader reader) { bool cont = true; Console.Write ("\n(" + reader.Name); if (reader.MoveToFirstAttribute ()) { do { Console.Write (" (" + reader.Name + " " + reader.Value + ")"); } while (reader.MoveToNextAttribute ()); reader.MoveToElement (); } while (cont && reader.Read ()) switch (reader.NodeType) { case XmlNodeType.Element: if (reader.Name == "doxygen") reader.Skip (); else read_element (reader); break; case XmlNodeType.Text: Console.Write ("\n\"" + reader.Value + "\""); break; case XmlNodeType.EndElement: cont = false; break; } Console.Write (")"); } static void print_node (XmlNode node) { XmlAttributeCollection acol = node.Attributes; if (acol != null) { XmlAttribute a = node.Attributes["key"]; if (a != null) Console.Write (a.Value); } Console.Write ("\n("); switch (node.NodeType) { case XmlNodeType.Element: Console.Write (node.Name); XmlAttributeCollection attrs = node.Attributes; foreach (XmlAttribute attr in attrs) Console.Write (" ({0} {1})", attr.Name, attr.Value); break; case XmlNodeType.Text: Console.WriteLine ("\n\"{0}\"", node.Value); break; default: Console.WriteLine ("\n{0}", node.NodeType); break; } node = node.FirstChild; while (node != null) { print_node (node); node = node.NextSibling; } Console.Write (")"); } public static void Main (string[] args) { FileStream stream; XmlTextReader reader; XmlDocument doc; #if false stream = File.OpenRead ("/usr/local/work/m17n-db-xml/MIM/ispell.mimx"); reader = new XmlTextReader (stream); doc = new XmlDocument (); reader.WhitespaceHandling = WhitespaceHandling.None; reader.Read (); Console.WriteLine (reader.Name + ":" + reader.NodeType); while (reader.NodeType != XmlNodeType.Element) reader.Read (); doc.LoadXml ("<" + reader.Name + "/>"); reader.Read (); while (reader.NodeType != XmlNodeType.Element || reader.Name != args[0]) reader.Skip (); doc.DocumentElement.InsertAfter (doc.ReadNode (reader), null); print_node (doc.DocumentElement); reader.Close (); stream.Dispose (); #else doc = new XmlDocument (xex); XmlReader read = new XIncludingReader (XmlReader.Create (args[0])); doc.Load (read); print_node (doc.DocumentElement); #endif } }