Что делает нормальный метод Java Node?
Я делаю несколько тестов, но я не вижу разницы, когда я использую метод normalize().
Но примеры на веб-сайте ExampleDepot используют его.
Итак, для чего это? (Документация для меня тоже не ясна)
Ответы
Ответ 1
Вы можете программно построить дерево DOM, которое имеет внешнюю структуру, не соответствующую фактическим структурам XML - в частности, такие вещи, как несколько узлов типа текста рядом друг с другом или пустые узлы текста типа. Метод normalize()
удаляет эти, т.е. Объединяет смежные текстовые узлы и удаляет пустые.
Это может быть полезно, когда у вас есть другой код, который ожидает, что деревья DOM всегда будут выглядеть как нечто, построенное из реального XML-документа.
В основном это означает, что следующий элемент XML
<foo>hello
wor
ld</foo>
может быть представлен таким образом в денормализованном node:
Element foo
Text node: ""
Text node: "Hello "
Text node: "wor"
Text node: "ld"
При нормализации, node будет выглядеть следующим образом:
Element foo
Text node: "Hello world"
Ответ 2
Он очищает код от смежных текстовых узлов и пустых текстовых узлов
Ответ 3
существует много возможных деревьев DOM, которые соответствуют одной и той же структуре XML, и каждая структура XML имеет по крайней мере одно соответствующее дерево DOM. Таким образом, преобразование из DOM в XML surjective.
Так может случиться так:
dom_tree_1 != dom_tree_2
# but:
dom_tree_1.save_DOM_as_XML() == dom_tree_2.save_DOM_as_XML()
И нет способа обеспечить:
dom_tree == dom_tree.save_DOM_as_XML().load_DOM_from_XML()
Но мы хотели бы иметь bijective. Это означает, что каждая структура XML соответствует одному конкретному дереву DOM.
Таким образом, вы можете определить подмножество всех возможных деревьев DOM, которое является биективным для множества всех возможных структур XML.
# still:
dom_tree.save_DOM_as_XML() == dom_tree.normalized().save_DOM_as_XML()
# but with:
dom_tree_n = dom_tree.normalize()
# we now even have:
dom_tree_n == dom_tree_n.save_DOM_as_XML().load_DOM_from_XML().normalize()
Таким образом, нормированные деревья DOM могут быть полностью восстановлены из представления XML. Потери информации отсутствуют.
Ответ 4
Нормализовать корневой элемент документа XML. Это гарантирует, что все текстовые узлы под корнем node помещаются в "нормальную" форму, а это означает, что в документе нет ни смежных текстовых узлов, ни пустых текстовых узлов.