Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在此处获取XElement的行号 XDocument xdoc=XDocument.Load(文件); IEnumerable categories=xdoc.substands(“类别”); foreach(类别中的XElement类别) { //在此处获取元素的行号。。。 } XDocument xdoc=XDocument.Load(文件,LoadOptions.SetLineInfo); IEnumerable categories=xdoc.substands(“类别”); foreach(类别中的XElement类别) { //在此处获取元素的行号。。。 字符串lineNumber=((IXmlLineInfo)类别).HasLineInfo()?((IXmlLineInfo)类别).lineNumber:-1; }_C#_.net_Xml_Linq To Xml - Fatal编程技术网

C# 在此处获取XElement的行号 XDocument xdoc=XDocument.Load(文件); IEnumerable categories=xdoc.substands(“类别”); foreach(类别中的XElement类别) { //在此处获取元素的行号。。。 } XDocument xdoc=XDocument.Load(文件,LoadOptions.SetLineInfo); IEnumerable categories=xdoc.substands(“类别”); foreach(类别中的XElement类别) { //在此处获取元素的行号。。。 字符串lineNumber=((IXmlLineInfo)类别).HasLineInfo()?((IXmlLineInfo)类别).lineNumber:-1; }

C# 在此处获取XElement的行号 XDocument xdoc=XDocument.Load(文件); IEnumerable categories=xdoc.substands(“类别”); foreach(类别中的XElement类别) { //在此处获取元素的行号。。。 } XDocument xdoc=XDocument.Load(文件,LoadOptions.SetLineInfo); IEnumerable categories=xdoc.substands(“类别”); foreach(类别中的XElement类别) { //在此处获取元素的行号。。。 字符串lineNumber=((IXmlLineInfo)类别).HasLineInfo()?((IXmlLineInfo)类别).lineNumber:-1; },c#,.net,xml,linq-to-xml,C#,.net,Xml,Linq To Xml,XElement(实际上是XObject)实现了IXmlLineInfo接口,因此您可以使用它: XDocument xdoc = XDocument.Load(file, LoadOptions.SetLineInfo); IEnumerable<XElement> categories = xdoc.Descendants("Category"); foreach (XElement category in categories) { //get line number

XElement
(实际上是
XObject
)实现了
IXmlLineInfo
接口,因此您可以使用它:

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;
}

请注意,行信息并不总是可用的,您需要调用
HasLineInfo
方法来检查信息是否可用。使用
XDocument.load

加载文档时,您可以指定
LoadOptions.SetLineInfo
。感谢您提到
LoadOptions.SetLineInfo
方法。感谢您提到
LoadOptions.SetLineInfo
。这让我有点困惑。IXmlLineInfo.LineNumber返回
int
not
string
就个人而言,从C#6开始,我会写为
int lineNo=(类别为IXmlLineInfo)?。LineNumber-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;
}
IXmlLineInfo info = category;
int lineNumber = info.LineNumber;