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; }
protected void NewNode(XmlNodeType nodeType, string value) { SAXRecord rec = new SAXRecord(); rec.nodeType = nodeType; rec.value = value; m_queue.Enqueue(rec); }
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); }
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; }
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; }
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); }