Действительно ли XPath намного более эффективен по сравнению с DOM и SAX?

У вас есть несколько возможностей скрыть текстовое поле с помощью css. Проще всего установить непрозрачность на 0

TextField.css

.hidden{
    -fx-opacity: 0;
}

Java

GridPane root = new GridPane();
// Add stylesheet
root.getStylesheets().add("TextField.css");

TextField textField = new TextField();
// Add class
textField.getStyleClass().add("hidden");

С другой стороны, я бы действительно Спросите себя, если этот "взломать" путь. Если ваш сканер штрих-кода просто вставляет текст, возможно, лучшим решением будет добавить обработчик событий и соответственно обрабатывать нажатия клавиш:

EventHandler

root.addEventHandler(KeyEvent.ANY,(event)->{
    System.out.println(event);
});
21
задан sundeep 27 March 2009 в 09:44
поделиться

5 ответов

SAX является нисходящим синтаксическим анализатором и предоставляет последовательный доступ к XML-документу и работает хорошо на доступ только для чтения. DOM, с другой стороны, более устойчив - он читает весь XML-документ в дерево и очень эффективен, когда Вы хотите измениться, добавьте, удалите данные в том дереве XML. XPath полезен, когда Вам только нужны несколько значений из XML-документа, и Вы знаете, где найти их (Вы знаете путь данных,/root/item/challange/text).

SAX: Время, эффективное при итерации через документ, дает единственную передачу для каждого повторения

DOM: Гибкий / производительность, дает Вам больше способов работать Ваши данные

XPath: Время, эффективное, когда только необходимо считать несколько значений

28
ответ дан 29 November 2019 в 20:39
поделиться

Если Вы не используете прототип исследования потоковой передачи XPath, вероятно, что Ваш механизм XPath загружает все в память, таким образом, это будет иметь подобные характеристики к DOM. Таким образом, это скорее зависит от Вашего определения 'эффективности'. Конечно, легче использовать, и реализации XPath могли измениться, чтобы быть более эффективными, тогда как DOM будет всегда иметь некоторое представление целого документа о клиентской машине, и SAX всегда будет намного более неловким к программе, чем XPath.

10
ответ дан 29 November 2019 в 20:39
поделиться

Этот документ из MSDN обеспечивает богатство информации об оптимизации обработки XML.

В частности, класс XPathDocument разработан, чтобы быть более эффективным для оценки выражений XPath, чем использование (основанное на DOM) класс XmlDocument. Причина состоит в том, что XPathDocument является представлением только для чтения XML-документа, в то время как реализация DOM также покрывает изменение документа.

Используя DOM имеет не менее - важная оборотная сторона, что это обычно приводит к сложному, подобному спагетти коду, который трудно понять и поддержать.

1
ответ дан 29 November 2019 в 20:39
поделиться

Если только необходимо найти значения определенных текстовых узлов, то XPath. Причина DOM поднимает большую память, состоит в том, потому что это читает в целом XML, и сформируйте дерево для документа. SAX основан на событии. Следовательно, на основе того, что Вы описали, XPath лучше всего удовлетворяет Вашему сценарию.

0
ответ дан 29 November 2019 в 20:39
поделиться

См. http://code.google.com/p/jlibs/wiki/xmldog

Мы даем набор XPaths to xmldog и попросить нюхать какой-то XML-документ. Он использует SAX и с одним проходом над документом, который он оценивает все данные XPaths.

1
ответ дан 29 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: