在这里获取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; }