C# 如何从XML文件中获取位置为的文本?

C# 如何从XML文件中获取位置为的文本?,c#,xml,html-parsing,C#,Xml,Html Parsing,我想解析HTML(您可以假设为XML,通过Tidy转换),并获取所有文本节点(这意味着Body标记中可见的节点)及其在XML文件中的位置。位置是指平面XML文件中的文本位置。您不应该依赖XML文件中的文本位置(任何健全的解析器都会完全忽略空白)。您可以(也应该)做的是识别您感兴趣的节点,然后从这些节点中取出文本。如果您只对文本节点感兴趣,那么查询“//text()”将获取所有文本节点。实现了IXmlLineInfo-如果您查看文档,它给出了一个读取XML文件并报告每个节点位置的示例 编辑:对于那

我想解析HTML(您可以假设为XML,通过Tidy转换),并获取所有文本节点(这意味着Body标记中可见的节点)及其在XML文件中的位置。位置是指平面XML文件中的文本位置。

您不应该依赖XML文件中的文本位置(任何健全的解析器都会完全忽略空白)。您可以(也应该)做的是识别您感兴趣的节点,然后从这些节点中取出文本。如果您只对文本节点感兴趣,那么查询“//text()”将获取所有文本节点。

实现了
IXmlLineInfo
-如果您查看文档,它给出了一个读取XML文件并报告每个节点位置的示例


编辑:对于那些说它不相关的人来说,它很可能与XML无关,但很可能与人类无关。如果您试图告诉人们在XML中查找特定位的位置,那么报告行号和位置会非常有帮助。

用于读取XML的SAX规范(几乎所有XML工具都实现)提供了一个带有定位器的ContentHandler,该定位器允许您获取行号和字符(列)号

(我错过了对C#的要求。上面的例子是针对Java的,但我将尝试找到相应的C#接口)

事件可以是一个字符串

.NET的SAX描述如下:

问题不在于如何更轻松地提取文本节点。HTML浏览器具有InnerText属性。我不想高速修改文本位置,XML解析器无法实现我想要的功能。这很好,但可以解决问题,我不想要行号和行位置,我正在寻找XML文件中的确切字符位置,不确定这是否可以获得该位置。@Priyank:不,我不确定你可以,很抱歉,您可以通过将文件作为文本加载(使用XmlTextReader.Encoding进行解码)并计算换行数,从行+列返回到字符偏移量。
int     getColumnNumber()
          Return the column number where the current document event ends.
 int    getLineNumber()
          Return the line number where the current document event ends.