如何获取 XmlElement 的字符位置?

Posted

技术标签:

【中文标题】如何获取 XmlElement 的字符位置?【英文标题】:How to get the character location of a XmlElement? 【发布时间】:2011-09-10 12:31:41 【问题描述】:

假设在我的 C# 代码中,我从 XmlDocument(或 XDocument强>)。如何在 XML 文件中获取此 XmlElement 的字符位置

换句话说,我想被告知

"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】:

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

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 - 不,空格不会被忽略。 您还需要设置SetLineInfo选项以加载文档。否则行和位置值始终为 0。(使用 .NET 4.7.2 测试;可能 9 年前有所不同) var document = XDocument.Load(fileName, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);

以上是关于如何获取 XmlElement 的字符位置?的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET 和 XmlElement() 如何从 API 调用中获取元素的值?

使用 XMLELEMENT Oracle 时如何替换 ' 或任何特殊字符

PL SQL xmlelement:如何从同一张表的互斥条件中获取xml中的数据

如何删除 XmlElement ? (XmlNode 与 XmlElement)

如何创建带前缀的 XmlElement 属性?

如何使用 JAXB 创建没有价值的 XmlElement