XDocument xdoc = XDocument.Load(file);
IEnumerable<XElement> categories = xdoc.Descendants("Category");
foreach (XElement category in categories)
{
//get line number for element here...
}
Получить номер строки для XElement здесь
Ответ 1
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;
}
Ответ 2
XElement
(фактически XObject
) реализует интерфейс IXmlLineInfo
, поэтому вы можете его использовать:
IXmlLineInfo info = category;
int lineNumber = info.LineNumber;
Обратите внимание, что информация о линии не всегда доступна, вам нужно вызвать метод HasLineInfo
, чтобы проверить, доступна ли эта информация. Вы можете указать LoadOptions.SetLineInfo
при загрузке документа с помощью XDocument.Load