Как получить текст из XML с позиции в XML-файле?


Я хочу разобрать HTML (можно предположить, что это XML, преобразованный через Tidy) и получить все текстовые узлы (что означает узлы в теге Body, которые видны) и их расположение в XML-файле. Расположение означает положение текста в плоском XML-файле.

3 2

3 ответа:

XmlTextReader implements IXmlLineInfo - Если вы посмотрите на документы для IXmlLineInfo в нем приведен пример чтения XML-файла и отчета о местоположении каждого узла.

EDIT: для тех, кто говорит, что это неуместно, это вполне может быть неуместно для XML - но, вполне возможно, не для человека. Если вы пытаетесь сказать людям, где искать в XML определенные биты, может быть очень полезно сообщить номера строк и позиции.

Спецификация SAX для чтения XML (которую реализуют почти все инструменты 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#).

Событие может быть строкой символов.

SAX для .NET описывается в: http://saxdotnet.sourceforge.net/

Не следует полагаться на положение текста в XML-файле (пробелы полностью игнорируются любым здравомыслящим синтаксическим анализатором). Что вы можете (и должны) делать, так это использоватьXPath для идентификации узлов, которые вас интересуют, а затем извлекать текст из этих узлов. Если вас интересуют только текстовые узлы, то запрос "//text()" захватит все текстовые узлы.