Подтвердить что ты не робот

Получить номер строки для XElement здесь

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

Ответ 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