XPathDocument с XPathNavigator VS Xmlreader? - PullRequest
2 голосов
/ 31 декабря 2011

Я видел этот вопрос:

XPathDocument против XmlDocument

Но у него нет информации, которую я ищу: мой вопрос:

Я знаю, что XPathDocument загружает complete xml в память:

У меня вопрос со стадии, когда xml уже уже загружен :

какой из них быстрее найдет нужные элементы:

XPathDocument с XPathNavigator

или

xmlReader с условиями If

1 Ответ

2 голосов
/ 28 февраля 2012

Если по

"xml уже загружен"

Вы имеете в виду, что он уже будет загружен в XPathDocument или XmlDocument, тогда производительность использования XPathNavigator или XmlReader будет такой же. Оба будут проходить через уже проанализированные узлы в памяти, представляющие модель данных XPath.

Основное различие между ними заключается в том, что XmlReader обеспечивает доступ только для пересылки, тогда как XPathNavigator обеспечивает доступ курсора к документу. Непосредственное взаимодействие с XmlReader очень полезно, если вы не хотите нести расходы на загрузку всего документа в памяти. В противном случае это не так полезно.

Я бы настоятельно рекомендовал использовать XPathNavigator. Существует два основных способа взаимодействия с XPathNavigator:

  1. Создайте свой конечный автомат (используя if / elses). Одним из огромных преимуществ этого с XPathNavigator, а не с XmlReader, является то, что благодаря модели доступа к курсору в XPathNavigator ваш конечный автомат будет значительно проще. Пример: нужно посмотреть, есть ли у родителя определенный атрибут? Просто перейдите к нему и посмотрите.
  2. Используйте запросы XPath для поиска данных, которые вы ищете. Может быть не так быстро, но, вероятно, будет менее подвержен ошибкам, чем создание собственного конечного автомата. Конечно, для этого нужно разбираться в XPath.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...