如何获取 XmlElement 的字符位置?

5

假设在我的C#代码中,我从一个XmlDocument(或XDocument)中检索到了一个XmlElement(或XElement)。我该如何获取这个XmlElement在XML文件中的字符位置?

换句话说,我想知道:

"Your element starts on the 176th character in the text file containing the XML", 

不是

"Your 'book' element is the 3rd 'book' element in the whole XML document".
1个回答

6

我不确定能否确定字符数,但是您可以找到行号和行内位置:

var document = XDocument.Load(fileName, LoadOptions.SetLineInfo);
var element = document.Descendants("nodeName").FirstOrDefault();
var xmlLineInfo = (IXmlLineInfo)element;
Console.WriteLine("Line: {0}, Position: {1}", xmlLineInfo.LineNumber, xmlLineInfo.LinePosition);

你还需要考虑到空格很可能也会被忽略。这可能是你能得到的最好结果了。 - Xaisoft
@Xaisoft - 不,空格不会被忽略。 - Alex Aza
你还需要为加载文档设置SetLineInfo选项。否则,行和位置值始终为0。(在.NET 4.7.2中测试过;也许9年前情况不同)var document = XDocument.Load(fileName, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); - Beauty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接