示例#1
0
 public override void WriteStartElement(string prefix, string localName, string ns)
 {
     if (_wrapped == null)
     {
         // This is the first time WriteStartElement has been called, so create the Xml or Html writer
         if (ns.Length == 0 && IsHtmlTag(localName))
         {
             CreateWrappedWriter(XmlOutputMethod.Html);
         }
         else
         {
             CreateWrappedWriter(XmlOutputMethod.Xml);
         }
     }
     _wrapped.WriteStartElement(prefix, localName, ns);
 }
        /// <summary>
        /// Check well-formedness, possibly output doc-type-decl, and determine whether this element is a
        /// CData section element.
        /// </summary>
        public override void WriteStartElement(string?prefix, string localName, string?ns)
        {
            EndCDataSection();

            if (_checkWellFormedDoc)
            {
                // Don't allow multiple document elements
                if (_depth == 0 && _hasDocElem)
                {
                    throw new XmlException(SR.Xml_NoMultipleRoots, string.Empty);
                }

                _depth++;
                _hasDocElem = true;
            }

            // Output doc-type declaration immediately before first element is output
            if (_outputDocType)
            {
                _wrapped.WriteDocType(
                    string.IsNullOrEmpty(prefix) ? localName : prefix + ":" + localName,
                    _publicId,
                    _systemId,
                    null);

                _outputDocType = false;
            }

            _wrapped.WriteStartElement(prefix, localName, ns);

            if (_lookupCDataElems != null)
            {
                // Determine whether this element is a CData section element
                _qnameCData !.Init(localName, ns);
                _bitsCData !.PushBit(_lookupCDataElems.ContainsKey(_qnameCData));
            }
        }