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);
        }
Ejemplo n.º 2
0
            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();
                }
            }