【发布时间】:2010-12-27 23:15:51
【问题描述】:
我想解析 HTML(您可以假设为 XML,通过 Tidy 转换)并获取所有文本节点(这意味着 Body 标记中可见的节点)及其在 XML 文件中的位置。位置表示平面 XML 文件中的文本位置。
【问题讨论】:
标签: c# xml html-parsing
我想解析 HTML(您可以假设为 XML,通过 Tidy 转换)并获取所有文本节点(这意味着 Body 标记中可见的节点)及其在 XML 文件中的位置。位置表示平面 XML 文件中的文本位置。
【问题讨论】:
标签: c# xml html-parsing
XmlTextReader 实现 IXmlLineInfo - 如果您查看 IXmlLineInfo 的文档,它提供了一个读取 XML 文件并报告每个节点位置的示例。
编辑:对于那些说它无关紧要的人,它可能与 XML 无关——但很可能与人类无关。如果您试图告诉人们在 XML 中查找特定位的位置,报告行号和位置会非常有帮助。
【讨论】:
用于读取 XML 的 SAX 规范(几乎所有 XML 工具都实现)提供了一个带有定位器的 ContentHandler,它允许您获取行号和字符(列)号。
int getColumnNumber()
Return the column number where the current document event ends.
int getLineNumber()
Return the line number where the current document event ends.
(我错过了对C#的要求。上面的例子是针对Java的,但我会尝试找到对应的C#接口)。
事件可以是一串字符。
.NET 的 SAX 描述如下: http://saxdotnet.sourceforge.net/
【讨论】:
您不应该依赖 XML 文件中的文本位置(任何理智的解析器都会完全忽略空格)。您可以(并且应该)做的是使用XPath 来识别您感兴趣的节点,然后从这些节点中取出文本。如果您只对文本节点感兴趣,那么查询“//text()”将获取所有文本节点。
【讨论】: