public XmlAttributePreservationDict GetDictAtPosition(int lineNumber, int linePosition) { if (reader.ReadToPosition(lineNumber, linePosition)) { Debug.Assert((char)reader.Peek() == '<'); StringBuilder sb = new StringBuilder(); int character; bool inAttribute = false; do { character = reader.Read(); if (character == '\"') { inAttribute = !inAttribute; } sb.Append((char)character); }while (character > 0 && ((char)character != '>' || inAttribute)); if (character > 0) { XmlAttributePreservationDict dict = new XmlAttributePreservationDict(); dict.ReadPreservationInfo(sb.ToString()); return(dict); } } Debug.Fail("Failed to get preservation info"); return(null); }
internal XmlFileInfoElement(string prefix, string localName, string namespaceUri, XmlFileInfoDocument document) : base(prefix, localName, namespaceUri, document) { lineNumber = document.CurrentLineNumber; linePosition = document.CurrentLinePosition; isOriginal = document.FirstLoad; if (document.PreservationProvider != null) { preservationDict = document.PreservationProvider.GetDictAtPosition(lineNumber, linePosition - 1); } if (preservationDict == null) { preservationDict = new XmlAttributePreservationDict(); } }