// Token: 0x06000293 RID: 659 RVA: 0x000093D0 File Offset: 0x000075D0
        private void WriteXmlElement(XmlElement elem)
        {
            int  tag  = WBXmlBase.Schema.GetTag(elem.NamespaceURI, elem.LocalName);
            bool flag = WBXmlWriter.ElementHasContent(elem);

            this.WriteTag(tag, flag, false);
            if (flag)
            {
                foreach (object obj in elem.ChildNodes)
                {
                    XmlNode xmlNode = (XmlNode)obj;
                    switch (xmlNode.NodeType)
                    {
                    case XmlNodeType.Element:
                    {
                        WBxmlBlobNode wbxmlBlobNode = xmlNode as WBxmlBlobNode;
                        if (wbxmlBlobNode != null)
                        {
                            int tag2 = WBXmlBase.Schema.GetTag(wbxmlBlobNode.NamespaceURI, wbxmlBlobNode.LocalName);
                            this.WriteTag(tag2, true, false);
                            if (wbxmlBlobNode.ByteArray != null)
                            {
                                this.WriteByteArray(wbxmlBlobNode.ByteArray);
                            }
                            if (wbxmlBlobNode.Stream != null)
                            {
                                switch (wbxmlBlobNode.OriginalNodeType)
                                {
                                case XmlNodeType.Text:
                                    this.stream.WriteByte(3);
                                    break;

                                case XmlNodeType.CDATA:
                                    this.stream.WriteByte(195);
                                    this.WriteMultiByteInteger((int)wbxmlBlobNode.StreamDataSize);
                                    break;
                                }
                                wbxmlBlobNode.CopyStream(this.stream);
                                if (wbxmlBlobNode.OriginalNodeType == XmlNodeType.Text)
                                {
                                    this.stream.WriteByte(0);
                                }
                            }
                            this.WriteEndTag();
                        }
                        else
                        {
                            this.WriteXmlElement((XmlElement)xmlNode);
                        }
                        break;
                    }

                    case XmlNodeType.Attribute:
                        break;

                    case XmlNodeType.Text:
                        this.WriteString(xmlNode.Value);
                        break;

                    case XmlNodeType.CDATA:
                        this.WriteOpaqueString(xmlNode.Value);
                        break;

                    default:
                        throw new EasWBXmlTransientException(string.Format("WriteXmlElement encountered an invalid XmlNodeType of '{0}'", xmlNode.NodeType));
                    }
                }
                this.WriteEndTag();
            }
        }