Как работает загрузка файлов в DOM? - PullRequest
2 голосов
/ 16 августа 2011

Я смотрел на загрузку XML-файлов с помощью Java и просто не могу расшифровать определенную его часть.Я понимаю, что SAX - это механизм потоковой передачи, но когда речь идет о DOM, различные сайты говорят о модели «загрузка в полном файле» или «загрузка во всех тегах», поддерживаемой рекомендацией использовать SAX с большими файлами XML.

В какой степени DOM фактически загружает полный файл?Когда я обращаюсь к корневому узлу, он выделяет программную память для каждого байта файла?Загружает ли он теги до самого низкого уровня, когда загружает текстовое содержимое?

Я собираюсь работать с большими файлами, но произвольный доступ был бы полезен, и редактирование является обязательным требованием, поэтому я считаю, что DOM - этолучший выбор для меня.

Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 16 августа 2011

Он загружает весь файл и создает древовидную структуру в памяти. Таким образом, будут загружены все теги, атрибуты и любые вложенные теги (независимо от того, сколько уровней вложенности). Просто построенное дерево становится тем больше, чем больше у вас XML-файл.

2 голосов
/ 16 августа 2011

Да, DOM читает весь документ, анализирует его и помещает в память.

0 голосов
/ 16 августа 2011

Если вы анализируете с помощью DOM, вы делаете что-то похожее на это:

 DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
 Document doc = builder.parse(file);

(внутри попытки / улова)

В момент выполнения анализа переменная Document doc будет содержать весь документ, представленный в виде иерархии DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...