Esempio n. 1
0
        /// <summary>
        /// Gets the dialog id at the specified line.
        /// </summary>
        /// <param name="index">Line numbers start from zero.</param>
        /// <returns>The dialog id found at the specified line;
        /// <see langword="null"/> if no dialog found.</returns>
        public static string GetDialogId(XmlTextReader reader, int line)
        {
            // Add one to line since XmlTextReader line numbers start from one.
            ++line;

            DialogStartElement dialogStartElement = null;

            using (reader) {
                object dialogElementName = reader.NameTable.Add("Dialog");
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        if (IsElementMatch(dialogElementName, reader.LocalName))
                        {
                            if (line < reader.LineNumber)
                            {
                                return(null);
                            }
                            else if (line == reader.LineNumber)
                            {
                                return(GetIdFromCurrentNode(reader));
                            }
                            else if (reader.IsStartElement())
                            {
                                dialogStartElement = new DialogStartElement(reader.LineNumber, GetIdFromCurrentNode(reader));
                            }
                        }
                        break;

                    case XmlNodeType.EndElement:
                        if (IsElementMatch(dialogElementName, reader.LocalName))
                        {
                            if (line > dialogStartElement.Line && line <= reader.LineNumber)
                            {
                                return(dialogStartElement.Id);
                            }
                        }
                        break;
                    }
                }
            }
            return(null);
        }
Esempio n. 2
0
        /// <summary>
        /// Gets the dialog id at the specified line.
        /// </summary>
        /// <param name="index">Line numbers start from one.</param>
        public string GetDialogId(int line)
        {
            DialogStartElement dialogStartElement = null;

            using (reader) {
                object dialogElementName = reader.NameTable.Add("Dialog");
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        if (IsElementMatch(dialogElementName, reader.LocalName))
                        {
                            if (line < reader.LineNumber)
                            {
                                return(null);
                            }
                            else if (line == reader.LineNumber)
                            {
                                return(GetIdAttributeValueFromCurrentNode());
                            }
                            else if (reader.IsStartElement())
                            {
                                dialogStartElement = new DialogStartElement(reader.LineNumber, GetIdAttributeValueFromCurrentNode());
                            }
                        }
                        break;

                    case XmlNodeType.EndElement:
                        if (IsElementMatch(dialogElementName, reader.LocalName))
                        {
                            if (line > dialogStartElement.Line && line <= reader.LineNumber)
                            {
                                return(dialogStartElement.Id);
                            }
                        }
                        break;
                    }
                }
            }
            return(null);
        }
Esempio n. 3
0
		/// <summary>
		/// Gets the dialog id at the specified line.
		/// </summary>
		/// <param name="index">Line numbers start from zero.</param>
		/// <returns>The dialog id found at the specified line;
		/// <see langword="null"/> if no dialog found.</returns>
		public static string GetDialogId(XmlTextReader reader, int line)
		{
			// Add one to line since XmlTextReader line numbers start from one.
			++line;
			
			DialogStartElement dialogStartElement = null;
			
			using (reader) {			
				object dialogElementName = reader.NameTable.Add("Dialog");
				while (reader.Read()) {
					switch (reader.NodeType) {
						case XmlNodeType.Element:
							if (IsElementMatch(dialogElementName, reader.LocalName)) {
								if (line < reader.LineNumber) {
									return null;
								} else if (line == reader.LineNumber) {
									return GetIdFromCurrentNode(reader);
								} else if (reader.IsStartElement()) {
									dialogStartElement = new DialogStartElement(reader.LineNumber, GetIdFromCurrentNode(reader));
								}
							}
							break;
						case XmlNodeType.EndElement:
							if (IsElementMatch(dialogElementName, reader.LocalName)) {
								if (line > dialogStartElement.Line && line <= reader.LineNumber) {
									return dialogStartElement.Id;
								} 
							}
							break;
					}
				}
			}
			return null;
		}
		/// <summary>
		/// Gets the dialog id at the specified line.
		/// </summary>
		/// <param name="index">Line numbers start from one.</param>
		public string GetDialogId(int line)
		{
			DialogStartElement dialogStartElement = null;
			
			using (reader) {
				object dialogElementName = reader.NameTable.Add("Dialog");
				while (reader.Read()) {
					switch (reader.NodeType) {
						case XmlNodeType.Element:
							if (IsElementMatch(dialogElementName, reader.LocalName)) {
								if (line < reader.LineNumber) {
									return null;
								} else if (line == reader.LineNumber) {
									return GetIdAttributeValueFromCurrentNode();
								} else if (reader.IsStartElement()) {
									dialogStartElement = new DialogStartElement(reader.LineNumber, GetIdAttributeValueFromCurrentNode());
								}
							}
							break;
						case XmlNodeType.EndElement:
							if (IsElementMatch(dialogElementName, reader.LocalName)) {
								if (line > dialogStartElement.Line && line <= reader.LineNumber) {
									return dialogStartElement.Id;
								} 
							}
							break;
					}
				}
			}
			return null;
		}