XDocument xdoc = XDocument.Load(file);
IEnumerable<XElement> categories = xdoc.Descendants("Category");
foreach (XElement category in categories)
{
//get line number for element here...
}
risposta
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;
}
XElement
(in realtà XObject
) implementa l'interfaccia IXmlLineInfo
, in modo da poter utilizzare:
IXmlLineInfo info = category;
int lineNumber = info.LineNumber;
nota che la linea le informazioni non è sempre disponibile, è necessario chiamare il metodo HasLineInfo
per verificare se le informazioni sono disponibili. È possibile specificare LoadOptions.SetLineInfo
quando si carica il documento con XDocument.Load
questo dovrebbe essere contrassegnato come risposta, immagino ... –
+1 per una spiegazione reale! – cod3monk3y
accetta questa risposta .... funziona come per magia .. grazie @Thomas – Scorpio
IXmlLineInfo.LineNumber restituisce '' non int' STRING' –
Personalmente, da C# 6, vorrei scriverlo as'int LINENO = (categoria IXmlLineInfo) ?. LineNumber? ? -1; ' – maxp