получить номер строки для XElement здесь - PullRequest
26 голосов
/ 17 декабря 2010
XDocument xdoc = XDocument.Load(file);
IEnumerable<XElement> categories = xdoc.Descendants("Category");
foreach (XElement category in categories)
{
    //get line number for element here...
}

Ответы [ 2 ]

61 голосов
/ 17 декабря 2010

XElement (фактически XObject) реализует интерфейс IXmlLineInfo, поэтому вы можете использовать его:

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

Обратите внимание, что информация о строке не всегда доступна, вам нужно вызвать метод HasLineInfo, чтобы проверить, доступна ли эта информация. Вы можете указать LoadOptions.SetLineInfo при загрузке документа с XDocument.Load

29 голосов
/ 17 декабря 2010
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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...