private void ProcessAttributes(XmlReader xmlReader, XElement element, IXmlLineInfo lineInfo) { if (xmlReader.HasAttributes) { while (xmlReader.MoveToNextAttribute()) { if (_lastTextRange != null) { _lastTextRange.CloseEndLine = lineInfo.LineNumber; _lastTextRange.CloseEndColumn = lineInfo.LinePosition - 1; } _lastTextRange = new TextRange(); _lastTextRange.OpenStartLine = lineInfo.LineNumber; _lastTextRange.OpenStartColumn = lineInfo.LinePosition; XName attributeName = null; if (xmlReader.NamespaceURI == XNamespace.Xmlns.NamespaceName) { if (string.IsNullOrEmpty(xmlReader.Prefix)) { attributeName = "xmlns"; } else { attributeName = XNamespace.Xmlns + xmlReader.LocalName; } } else { attributeName = XNamespace.Get(xmlReader.NamespaceURI) + xmlReader.LocalName; } var attribute = new XAttribute(attributeName, xmlReader.Value); attribute.SetTextRange(_lastTextRange); element.Add(attribute); } } }