DiscoveryDocument.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. //
  2. // System.Web.Services.Protocols.DiscoveryDocument.cs
  3. //
  4. // Author:
  5. // Dave Bettin ([email protected])
  6. // Tim Coleman ([email protected])
  7. // Lluis Sanchez Gual ([email protected])
  8. //
  9. // Copyright (C) Dave Bettin, 2002
  10. // Copyright (C) Tim Coleman, 2002
  11. //
  12. using System.Collections;
  13. using System.IO;
  14. using System.Xml;
  15. using System.Xml.Serialization;
  16. namespace System.Web.Services.Discovery {
  17. [XmlRoot ("discovery", Namespace = "http://schemas.xmlsoap.org/disco/")]
  18. public sealed class DiscoveryDocument {
  19. #region Fields
  20. public const string Namespace = "http://schemas.xmlsoap.org/disco/";
  21. [XmlElement(typeof(ContractReference))]
  22. [XmlElement(typeof(DiscoveryDocumentReference))]
  23. [XmlElement(typeof(SchemaReference))]
  24. internal ArrayList references = new ArrayList();
  25. #endregion // Fields
  26. #region Constructors
  27. public DiscoveryDocument ()
  28. {
  29. }
  30. #endregion // Constructors
  31. #region Properties
  32. [XmlIgnore]
  33. public IList References {
  34. get { return references; }
  35. }
  36. #endregion // Properties
  37. #region Methods
  38. public static bool CanRead (XmlReader xmlReader)
  39. {
  40. xmlReader.MoveToContent ();
  41. return xmlReader.NodeType == XmlNodeType.Element &&
  42. xmlReader.LocalName == "discovery" &&
  43. xmlReader.NamespaceURI == Namespace;
  44. }
  45. public static DiscoveryDocument Read (Stream stream)
  46. {
  47. return Read (new XmlTextReader (stream));
  48. }
  49. public static DiscoveryDocument Read (TextReader textReader)
  50. {
  51. return Read (new XmlTextReader (textReader));
  52. }
  53. public static DiscoveryDocument Read (XmlReader xmlReader)
  54. {
  55. DiscoveryDocumentSerializer ser = new DiscoveryDocumentSerializer();
  56. return (DiscoveryDocument) ser.Deserialize (xmlReader);
  57. }
  58. public void Write (Stream stream)
  59. {
  60. Write (new XmlTextWriter (new StreamWriter (stream)));
  61. }
  62. public void Write (TextWriter textWriter)
  63. {
  64. Write (new XmlTextWriter (textWriter));
  65. }
  66. public void Write (XmlWriter xmlWriter)
  67. {
  68. DiscoveryDocumentSerializer ser = new DiscoveryDocumentSerializer();
  69. ser.Serialize (xmlWriter, ser);
  70. }
  71. #endregion // Methods
  72. }
  73. internal class DiscoveryDocumentSerializer : XmlSerializer
  74. {
  75. protected override void Serialize (object o, XmlSerializationWriter writer)
  76. {
  77. DiscoveryDocumentWriter xsWriter = writer as DiscoveryDocumentWriter;
  78. xsWriter.WriteTree ((DiscoveryDocument)o);
  79. }
  80. protected override object Deserialize (XmlSerializationReader reader)
  81. {
  82. DiscoveryDocumentReader xsReader = reader as DiscoveryDocumentReader;
  83. return xsReader.ReadTree ();
  84. }
  85. protected override XmlSerializationWriter CreateWriter ()
  86. {
  87. return new DiscoveryDocumentWriter ();
  88. }
  89. protected override XmlSerializationReader CreateReader ()
  90. {
  91. return new DiscoveryDocumentReader ();
  92. }
  93. }
  94. }