鉴于以下内容
(行号和列号代表节点的'<'字符)
使用XDocument API如何在该位置找到XNode。
答案 0 :(得分:3)
你可以这样做:
XNode FindNode(string path, int line, int column)
{
XDocument doc = XDocument.Load(path, LoadOptions.SetLineInfo);
var query =
from node in doc.DescendantNodes()
let lineInfo = (IXmlLineInfo)node
where lineInfo.LineNumber == line
&& lineInfo.LinePosition <= column
select node;
return query.LastOrDefault();
}
答案 1 :(得分:1)
请参阅LINQ上的LINQ to XML and Line Numbers使用IXmlLineInfo给出一个与您要查找的内容相对应的示例:
XDocument xml = XDocument.Load(fileName, LoadOptions.SetLineInfo);
var line = from x in xml.Descendants()
let lineInfo = (IXmlLineInfo)x
where lineInfo.LineNumber == 21
select x;
foreach (var item in line)
{
Console.WriteLine(item);
}