XDocument xdoc = XDocument.Load(file);
IEnumerable<XElement> categories = xdoc.Descendants("Category");
foreach (XElement category in categories)
{
//get line number for element here...
}
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
接口,因此您可以使用它:
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;
}
int
而不是 string
。 - Martin Schneiderint lineNo = (category as IXmlLineInfo)?.LineNumber ?? -1;
- maxp
LoadOptions.SetLineInfo
方法。 - ghdLoadOptions.SetLineInfo
。这使我有些困惑了一段时间。 - PseudoPsyche