Как получить текст из XML с позицией в файле XML? - PullRequest
2 голосов
/ 18 декабря 2009

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

Ответы [ 3 ]

8 голосов
/ 18 декабря 2009

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

РЕДАКТИРОВАТЬ: Для тех, кто говорит, что это не имеет значения, он может быть не имеет никакого отношения к XML - но вполне возможно, не для человека. Если вы пытаетесь сообщить людям, где искать в XML конкретные биты, может быть очень полезно сообщить номера строк и позиции.

1 голос
/ 18 декабря 2009

Спецификация 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/

0 голосов
/ 18 декабря 2009

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

...