在这里获取XElement的行号

XDocument xdoc = XDocument.Load(file); IEnumerable<XElement> categories = xdoc.Descendants("Category"); foreach (XElement category in categories) { //get line number for element here... } 

XElement (实际上是XObject )实现了IXmlLineInfo接口,所以你可以使用它:

 IXmlLineInfo info = category; int lineNumber = info.LineNumber; 

请注意,行信息并不总是可用的,您需要调用HasLineInfo方法来检查信息是否可用。 使用XDocument.Load加载文档时,可以指定LoadOptions.SetLineInfo

 XDocument xdoc = XDocument.Load(file, LoadOptions.SetLineInfo); IEnumerable<XElement> categories = xdoc.Descendants("Category"); foreach (XElement category in categories) { //get line number for element here... string lineNumber = ((IXmlLineInfo)category).HasLineInfo() ? ((IXmlLineInfo)category).LineNumber : -1; }