System.Xml.Schema.SchemaBuilder.IsContentParsed C# (CSharp) Method

IsContentParsed() abstract private method

abstract private IsContentParsed ( ) : bool
return bool
        internal abstract bool IsContentParsed();
        internal abstract void ProcessMarkup(XmlNode[] markup);

Usage Example

コード例 #1
0
        internal bool ParseReaderNode()
        {
            if (reader.Depth > markupDepth)
            {
                if (writer != null)   // ProcessMarkup
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        writer.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
                        writer.WriteAttributes(reader, false);
                        if (reader.IsEmptyElement)
                        {
                            writer.WriteEndElement();
                        }
                        break;

                    case XmlNodeType.Text:
                        writer.WriteString(reader.Value);
                        break;

                    case XmlNodeType.SignificantWhitespace:
                        writer.WriteWhitespace(reader.Value);
                        break;

                    case XmlNodeType.CDATA:
                        writer.WriteCData(reader.Value);
                        break;

                    case XmlNodeType.EntityReference:
                        writer.WriteEntityRef(reader.Name);
                        break;

                    case XmlNodeType.Comment:
                        writer.WriteComment(reader.Value);
                        break;

                    case XmlNodeType.EndElement:
                        writer.WriteFullEndElement();
                        break;
                    }
                }
                return(true);
            }
            if (reader.NodeType == XmlNodeType.Element)
            {
                if (builder.ProcessElement(reader.Prefix, reader.LocalName, reader.NamespaceURI))
                {
                    namespaceManager.PushScope();
                    if (reader.MoveToFirstAttribute())
                    {
                        do
                        {
                            builder.ProcessAttribute(reader.Prefix, reader.LocalName, reader.NamespaceURI, reader.Value);
                            if (Ref.Equal(reader.NamespaceURI, schemaNames.NsXmlNs) && isProcessNamespaces)
                            {
                                namespaceManager.AddNamespace(reader.Prefix == string.Empty ? string.Empty : reader.LocalName, reader.Value);
                            }
                        }while (reader.MoveToNextAttribute());
                        reader.MoveToElement(); // get back to the element
                    }
                    builder.StartChildren();
                    if (reader.IsEmptyElement)
                    {
                        namespaceManager.PopScope();
                        builder.EndChildren();
                    }
                    else if (!builder.IsContentParsed())
                    {
                        markupDepth  = reader.Depth;
                        stringWriter = new StringWriter();
                        writer       = new XmlTextWriter(stringWriter);
                        writer.WriteStartElement(reader.LocalName);
                    }
                }
                else if (!reader.IsEmptyElement)
                {
                    markupDepth = reader.Depth;
                    writer      = null;
                }
            }
            else if (reader.NodeType == XmlNodeType.Text ||
                     reader.NodeType == XmlNodeType.EntityReference ||
                     reader.NodeType == XmlNodeType.SignificantWhitespace ||
                     reader.NodeType == XmlNodeType.CDATA)
            {
                builder.ProcessCData(reader.Value);
            }
            else if (reader.NodeType == XmlNodeType.EndElement)
            {
                if (reader.Depth == markupDepth)
                {
                    if (writer != null)   // processUnparsedContent
                    {
                        writer.WriteEndElement();
                        writer.Close();
                        writer = null;
                        XmlDocument doc = new XmlDocument();
                        doc.Load(new XmlTextReader(new StringReader(stringWriter.ToString())));
                        XmlNodeList list   = doc.DocumentElement.ChildNodes;
                        XmlNode[]   markup = new XmlNode[list.Count];
                        for (int i = 0; i < list.Count; i++)
                        {
                            markup[i] = list[i];
                        }
                        builder.ProcessMarkup(markup);
                        namespaceManager.PopScope();
                        builder.EndChildren();
                    }
                    markupDepth = int.MaxValue;
                }
                else
                {
                    namespaceManager.PopScope();
                    builder.EndChildren();
                }
                if (reader.Depth == schemaXmlDepth)
                {
                    return(false); // done
                }
            }
            return(true);
        }
All Usage Examples Of System.Xml.Schema.SchemaBuilder::IsContentParsed