2010-03-16 59 views

Respuesta

21

Puede programación construir un árbol DOM que tiene una estructura extraña que no corresponden a estructuras XML reales - Especialmente cosas como múltiples nodos de texto de tipo junto a la otra, o nodos vacíos de teclee el texto. El método normalize() los elimina, es decir, combina nodos de texto adyacentes y elimina los vacíos.

Esto puede ser útil cuando tiene otro código que espera que los árboles DOM siempre se vean como algo construido a partir de un documento XML real.

Básicamente, esto significa que el siguiente elemento XML

<foo>hello 
wor 
ld</foo> 

podría representarse como este en un nodo sin normalizar:

Element foo 
    Text node: "" 
    Text node: "Hello " 
    Text node: "wor" 
    Text node: "ld" 

Cuando se normaliza, el nodo se verá así

Element foo 
    Text node: "Hello world" 
3

Limpia el código de los nodos de texto adyacentes y los nodos de texto vacíos

0

Normalice el elemento raíz del documento XML. Esto garantiza que todos los nodos de texto en el nodo raíz se colocan en una forma "normal", lo que significa que no hay ni nodos de texto adyacentes ni nodos de texto vacíos en el documento.

2

hay muchos posibles árboles DOM que corresponden a la misma estructura XML y cada estructura XML tiene al menos un árbol DOM correspondiente. Entonces la conversión de DOM a XML es surjective. Así puede suceder que:

dom_tree_1 != dom_tree_2 
# but: 
dom_tree_1.save_DOM_as_XML() == dom_tree_2.save_DOM_as_XML() 

Y no hay manera de asegurar:

dom_tree == dom_tree.save_DOM_as_XML().load_DOM_from_XML() 

Pero nos gustaría tenerlo bijective. Eso significa que cada estructura XML corresponde a un árbol DOM particular.

Para que pueda definir un subconjunto de todos los árboles DOM posibles que es bijective para el conjunto de todas las posibles estructuras 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() 

árboles DOM Así normalizados pueden ser perfectamente reconstruidos a partir de su representación XML. No hay pérdida de información.

Cuestiones relacionadas