J'ai vu la ligne ci-dessous dans le code d'un analyseur DOM lors de ce tutoriel .
doc.getDocumentElement().normalize();
Pourquoi faisons-nous cette normalisation?
J'ai lu les documents mais je n'ai pas pu comprendre un mot.
Place tous les nœuds de texte dans toute la profondeur de la sous-arborescence sous ce nœud
D'accord, alors quelqu'un peut-il me montrer (de préférence avec une photo) à quoi ressemble cet arbre?
Quelqu'un peut-il m'expliquer pourquoi une normalisation est nécessaire?
Que se passe-t-il si nous ne normalisons pas?
java
xml
dom
computer-science
Apple Grinder
la source
la source
Réponses:
Le reste de la phrase est:
Cela signifie essentiellement que l'élément XML suivant
pourrait être représenté comme ceci dans un nœud dénormalisé:
Une fois normalisé, le nœud ressemblera à ceci
Et il en va de même pour les attributs
<foo bar="Hello world"/>
:, commentaires, etc.la source
En termes simples, la normalisation est la réduction des redondances.
Exemples de redondances:
a) espaces blancs en dehors des balises racine / document ( ... <document> </document> ... )
b) espaces blancs dans la balise de début (< ... >) et la balise de fin (</ ... >)
c) les espaces blancs entre les attributs et leurs valeurs (c'est-à-dire les espaces entre le nom de la clé et = " )
d) les déclarations d'espace de noms superflues
e) les sauts de ligne / les espaces blancs dans les textes des attributs et des balises
f) les commentaires etc ...
la source
En tant qu'extension de la réponse de @ JBNizet pour les utilisateurs plus techniques, voici à quoi ressemble la mise en œuvre de l'
org.w3c.dom.Node
interfacecom.sun.org.apache.xerces.internal.dom.ParentNode
, vous donne une idée de son fonctionnement réel .Il parcourt tous les nœuds récursivement et appelle
kid.normalize()
Ce mécanisme est surchargé dans
org.apache.xerces.dom.ElementImpl
J'espère que cela vous fera gagner du temps.
la source