1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
5 using System.Runtime.Serialization.DataContracts;
9 namespace System.Runtime.Serialization
11 internal sealed class XmlSerializableWriter : XmlWriter
13 private XmlWriter _xmlWriter = null!; // initialized in BeginWrite
17 internal void BeginWrite(XmlWriter xmlWriter, object obj)
20 _xmlWriter = xmlWriter;
24 internal void EndWrite()
27 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.Format(SR.IXmlSerializableMissingEndElements, (_obj == null ? string.Empty : DataContract.GetClrTypeFullName(_obj.GetType())))));
31 public override void WriteStartDocument()
33 if (WriteState == WriteState.Start)
34 _xmlWriter.WriteStartDocument();
36 public override void WriteEndDocument() { _xmlWriter.WriteEndDocument(); }
37 public override void WriteStartDocument(bool standalone)
39 if (WriteState == WriteState.Start)
40 _xmlWriter.WriteStartDocument(standalone);
42 public override void WriteDocType(string name, string? pubid, string? sysid, string? subset)
44 // XmlSerializer does not write doc type
47 public override void WriteStartElement(string? prefix, string localName, string? ns)
49 _xmlWriter.WriteStartElement(prefix, localName, ns);
53 public override void WriteEndElement()
56 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.Format(SR.IXmlSerializableWritePastSubTree, (_obj == null ? string.Empty : DataContract.GetClrTypeFullName(_obj.GetType())))));
57 _xmlWriter.WriteEndElement();
61 public override void WriteFullEndElement()
64 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.Format(SR.IXmlSerializableWritePastSubTree, (_obj == null ? string.Empty : DataContract.GetClrTypeFullName(_obj.GetType())))));
65 _xmlWriter.WriteFullEndElement();
69 public override void Close()
71 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.IXmlSerializableIllegalOperation));
74 public override void WriteStartAttribute(string? prefix, string localName, string? ns)
76 _xmlWriter.WriteStartAttribute(prefix, localName, ns);
79 public override void WriteEndAttribute() { _xmlWriter.WriteEndAttribute(); }
80 public override void WriteCData(string? text) { _xmlWriter.WriteCData(text); }
81 public override void WriteComment(string? text) { _xmlWriter.WriteComment(text); }
82 public override void WriteProcessingInstruction(string name, string? text) { _xmlWriter.WriteProcessingInstruction(name, text); }
83 public override void WriteEntityRef(string name) { _xmlWriter.WriteEntityRef(name); }
84 public override void WriteCharEntity(char ch) { _xmlWriter.WriteCharEntity(ch); }
85 public override void WriteWhitespace(string? ws) { _xmlWriter.WriteWhitespace(ws); }
86 public override void WriteString(string? text) { _xmlWriter.WriteString(text); }
87 public override void WriteSurrogateCharEntity(char lowChar, char highChar) { _xmlWriter.WriteSurrogateCharEntity(lowChar, highChar); }
88 public override void WriteChars(char[] buffer, int index, int count) { _xmlWriter.WriteChars(buffer, index, count); }
89 public override void WriteRaw(char[] buffer, int index, int count) { _xmlWriter.WriteRaw(buffer, index, count); }
90 public override void WriteRaw(string data) { _xmlWriter.WriteRaw(data); }
91 public override void WriteBase64(byte[] buffer, int index, int count) { _xmlWriter.WriteBase64(buffer, index, count); }
92 public override void WriteBinHex(byte[] buffer, int index, int count) { _xmlWriter.WriteBinHex(buffer, index, count); }
93 public override WriteState WriteState { get { return _xmlWriter.WriteState; } }
94 public override void Flush() { _xmlWriter.Flush(); }
95 public override void WriteName(string name) { _xmlWriter.WriteName(name); }
96 public override void WriteQualifiedName(string localName, string? ns) { _xmlWriter.WriteQualifiedName(localName, ns); }
97 public override string? LookupPrefix(string ns) { return _xmlWriter.LookupPrefix(ns); }
98 public override XmlSpace XmlSpace { get { return _xmlWriter.XmlSpace; } }
99 public override string? XmlLang { get { return _xmlWriter.XmlLang; } }
100 public override void WriteNmToken(string name) { _xmlWriter.WriteNmToken(name); }