コード例 #1
0
 public override bool Read()
 {
     if (m_readState == ReadState.Initial)
         m_readState = ReadState.Interactive;
     if (m_inner != null)
     {
         if (m_inner.Read())
         {
             if (NodeType == XmlNodeType.Element)
                 m_depth++;
             else if (NodeType == XmlNodeType.EndElement)
                 m_depth--;
             return true;
         }
         m_inner.Close();
         m_inner = null;
     }
     if (m_queue.Count == 0)
     {
         if (m_source.Begin == null)
         {
             m_readState = ReadState.EndOfFile;
             return false;
         }
         ImportRow();
     }
     m_isEmptyElement = false;
     object tail = m_queue.Dequeue();
     if (tail is XmlReader)
     {
         m_inner = (XmlReader)tail;
         Debug.Assert(m_inner.Read());
     }
     else
         m_curr = (SAXRecord)tail;
     if (NodeType == XmlNodeType.Element)
     {
         m_depth++;
         if (m_queue.Count > 0)
         {
             object peek = m_queue.Peek();
             if (peek is SAXRecord && ((SAXRecord)peek).nodeType == XmlNodeType.EndElement)
                 m_isEmptyElement = true;
         }
     }
     else if (NodeType == XmlNodeType.EndElement)
         m_depth--;
     return true;
 }
コード例 #2
0
 protected void NewNode(XmlNodeType nodeType, string value)
 {
     SAXRecord rec = new SAXRecord();
     rec.nodeType = nodeType;
     rec.value = value;
     m_queue.Enqueue(rec);
 }
コード例 #3
0
 protected void NewNode(XmlNodeType nodeType, string localName,
     XmlSchemaElement schemaElement, XmlSchemaType schemaType)
 {
     SAXRecord rec = new SAXRecord();
     rec.nodeType = nodeType;
     rec.localName = localName;
     rec.schemaElement = schemaElement;
     rec.schemaType = schemaType;
     m_queue.Enqueue(rec);
 }
コード例 #4
0
 public override bool Read()
 {
     if (m_readState == ReadState.Initial)
         m_readState = ReadState.Interactive;
     if (m_queue.Count == 0)
     {
         if (m_source.Begin == null)
         {
             m_readState = ReadState.EndOfFile;
             return false;
         }
         ImportRow();
     }
     m_isEmptyElement = false;
     m_curr = m_queue.Dequeue();
     if (NodeType == XmlNodeType.Element)
     {
         m_depth++;
         if (m_queue.Count > 0)
         {
             SAXRecord rec = m_queue.Peek();
             if (rec.nodeType == XmlNodeType.EndElement)
                 m_isEmptyElement = true;
         }
     }
     else if (NodeType == XmlNodeType.EndElement)
         m_depth--;                        
     return true;
 }
コード例 #5
0
 public override bool Read()
 {
     if (m_readState == ReadState.Initial)
         m_readState = ReadState.Interactive;
     if (m_queue.Count == 0)
     {
         if (m_finish)
         {
             m_readState = ReadState.EndOfFile;
             return false;
         }
         if (m_source.Read())
             ImportRow();
         else
         {
             NewNode(XmlNodeType.EndElement, rootElem.Name, rootElem, rootElem.SchemaType);
             m_finish = true;
         }
     }
     m_isEmptyElement = false;
     m_curr = m_queue.Dequeue();
     if (NodeType == XmlNodeType.Element)
     {
         m_depth++;
         if (m_queue.Count > 0)
         {
             SAXRecord rec = m_queue.Peek();
             if (rec.nodeType == XmlNodeType.EndElement)
                 m_isEmptyElement = true;
         }
     }
     else if (NodeType == XmlNodeType.EndElement)
         m_depth--;
     return true;
 }
コード例 #6
0
 private void NewNode(XmlNodeType nodeType, string localName,
     XmlSchemaElement schemaElement, XmlSchemaType schemaType)
 {
     SAXRecord rec = new SAXRecord();
     rec.nodeType = nodeType;
     rec.localName = localName;
     if (m_typed)
     {
         rec.schemaElement = schemaElement;
         rec.schemaType = schemaType;
     }
     m_queue.Enqueue(rec);
 }