/// <summary> /// Reads the next node. /// </summary> /// <returns></returns> public XmppStreamElement ReadNextNode() { if (node.Length == 0) { depth = -1; nodeName = null; nodeNamespace = null; } while (!EOF && depth != 0) { SkipWhiteSpace(); int next = Peek(); if (next == '<' || currentTag.Length > 0) { if (!ReadTag()) { break; } string tag = currentTag.ToString(); if (!XmppStreamParser.IsProcessingInstruction(tag)) { if (node.Length == 0 && XmppStreamParser.IsXmppStreamOpen(tag)) { nodeName = XmppStreamParser.GetTagName(tag); depth = 0; } else if (node.Length == 0 && XmppStreamParser.IsEndStreamTag(tag)) { nodeName = XmppStreamParser.GetTagName(tag); depth = 0; } else { if (!XmppStreamParser.IsCharacterDataAndMarkup(tag)) { if (XmppStreamParser.IsStartTag(tag)) { if (depth == -1) { nodeName = XmppStreamParser.GetTagName(tag); nodeNamespace = XmppStreamParser.GetXmlNamespace(tag); depth++; } depth++; } if (XmppStreamParser.IsEndTag(tag)) { depth--; } } } node.Append(tag); } currentTag.Length = 0; } else if (next != -1) { if (!ReadText()) // Element Text { break; } } } XmppStreamElement result = null; if (depth == 0) { result = new XmppStreamElement(nodeName, nodeNamespace, node.ToString()); node.Length = 0; currentTag.Length = 0; depth = -1; nodeName = null; nodeNamespace = null; } return(result); }
/// <summary> /// Reads the next node. /// </summary> /// <returns></returns> public XmppStreamElement ReadNextNode() { if (node.Length == 0) { depth = -1; nodeName = null; nodeNamespace = null; } while (!EOF && depth != 0) { SkipWhiteSpace(); int next = Peek(); if (next == '<' || currentTag.Length > 0) { if (!ReadTag()) { break; } string tag = currentTag.ToString(); if (!XmppStreamParser.IsProcessingInstruction(tag)) { if (node.Length == 0 && XmppStreamParser.IsXmppStreamOpen(tag)) { nodeName = XmppStreamParser.GetTagName(tag); depth = 0; } else if (node.Length == 0 && XmppStreamParser.IsEndStreamTag(tag)) { nodeName = XmppStreamParser.GetTagName(tag); depth = 0; } else { if (!XmppStreamParser.IsCharacterDataAndMarkup(tag)) { if (XmppStreamParser.IsStartTag(tag)) { if (depth == -1) { nodeName = XmppStreamParser.GetTagName(tag); nodeNamespace = XmppStreamParser.GetXmlNamespace(tag); depth++; } depth++; } if (XmppStreamParser.IsEndTag(tag)) { depth--; } } } node.Append(tag); } currentTag.Length = 0; } else if (next != -1) { if (!ReadText()) // Element Text { break; } } } XmppStreamElement result = null; if (depth == 0) { result = new XmppStreamElement(nodeName, nodeNamespace, node.ToString()); node.Length = 0; currentTag.Length = 0; depth = -1; nodeName = null; nodeNamespace = null; } return result; }