Я видел строку ниже в коде для парсера DOM в этом уроке .
doc.getDocumentElement().normalize();
Почему мы делаем эту нормализацию?
Я читал документы, но не мог понять ни слова.
Размещает все текстовые узлы на всю глубину поддерева под этим узлом
Хорошо, тогда кто-нибудь может показать мне (желательно с изображением), как выглядит это дерево?
Может кто-нибудь объяснить мне, зачем нужна нормализация?
Что произойдет, если мы не нормализуем?
java
xml
dom
computer-science
Яблочная дробилка
источник
источник
Ответы:
Остальная часть предложения:
Это в основном означает, что следующий элемент XML
можно представить так в денормализованном узле:
Когда нормализуется, узел будет выглядеть так
То же самое касается атрибутов:,
<foo bar="Hello world"/>
комментариев и т. Д.источник
Проще говоря, нормализация - это сокращение избыточности.
Примеры избыточности:
а) пробелы за пределами корневых тегов / тегов документа ( ... <document> </ document> ... )
б) пробелы внутри начального тега (< ... >) и конечного тега (</ ... >)
c) пробелы между атрибутами и их значениями (т. е. пробелы между именем ключа и = " )
d) лишние объявления пространства имен
e) разрывы строк / пробелы в текстах атрибутов и тегов
f) комментарии и т. д ...
источник
В качестве дополнения к ответу @ JBNizet для более технических пользователей, вот как выглядит реализация
org.w3c.dom.Node
интерфейсаcom.sun.org.apache.xerces.internal.dom.ParentNode
, дает вам представление о том, как он на самом деле работает.Он рекурсивно пересекает все узлы и вызывает
kid.normalize()
этот механизм в
org.apache.xerces.dom.ElementImpl
Надеюсь, это сэкономит вам время.
источник