domdump.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.IO;
  3. using System.Xml;
  4. public class DomDumper
  5. {
  6. public static void Main ()
  7. {
  8. new DomDumper ().TestOASIS ();
  9. }
  10. public void TestOASIS ()
  11. {
  12. XmlDocument doc = new XmlDocument ();
  13. foreach (FileInfo fi in
  14. new DirectoryInfo (@"xml-test-suite/xmlconf/oasis").GetFiles ("*.xml")) {
  15. try {
  16. if (fi.Name.IndexOf ("fail") >= 0)
  17. continue;
  18. Console.WriteLine (fi.Name);
  19. XmlTextReader xtr = new XmlTextReader (fi.FullName);
  20. xtr.Namespaces = false;
  21. xtr.Normalization = true;
  22. doc.RemoveAll ();
  23. doc.Load (xtr);
  24. DumpDom (doc);
  25. } catch (XmlException ex) {
  26. if (fi.Name.IndexOf ("pass") >= 0)
  27. Console.WriteLine ("Incorrectly invalid: " + fi.FullName + "\n" + ex.Message);
  28. }
  29. }
  30. }
  31. public void DumpDom (XmlNode n)
  32. {
  33. Console.Write (n.NodeType);
  34. Console.Write (' ');
  35. Console.Write (n.Prefix);
  36. Console.Write (' ');
  37. Console.Write (n.Name);
  38. Console.Write (' ');
  39. Console.Write (n.LocalName);
  40. Console.Write (' ');
  41. Console.Write (n.NamespaceURI);
  42. Console.Write (' ');
  43. Console.Write (n.Value);
  44. Console.WriteLine (' ');
  45. Console.WriteLine ("Attributes::::");
  46. Console.Write (n.Attributes != null);
  47. if (n.Attributes != null) {
  48. Console.Write (' ');
  49. Console.Write (n.Attributes.Count);
  50. Console.Write (' ');
  51. for (int i = 0; i < n.Attributes.Count; i++)
  52. DumpDom (n.Attributes [i]);
  53. }
  54. Console.WriteLine (":::Attributes End");
  55. Console.WriteLine ("ChildNodes::::");
  56. Console.Write (n.ChildNodes != null);
  57. if (n.ChildNodes != null) {
  58. Console.Write (' ');
  59. Console.Write (n.ChildNodes.Count);
  60. Console.Write (' ');
  61. for (int i = 0; i < n.ChildNodes.Count; i++)
  62. DumpDom (n.ChildNodes [i]);
  63. }
  64. Console.WriteLine (":::ChildNodes End");
  65. }
  66. }