2010-03-16 34 views
15

Tôi đang làm một số thử nghiệm, nhưng tôi thấy không có sự khác biệt khi tôi sử dụng hoặc không phải là phương thức normalize(). Nhưng các ví dụ tại trang web ExampleDepot sử dụng nó. Vì vậy, nó là gì? (Tài liệu cũng không rõ ràng cho tôi)Phương pháp chuẩn hóa Java Node làm gì?

Trả lời

21

Bạn có thể lập trình xây dựng cây DOM có cấu trúc không liên quan không tương ứng với cấu trúc XML thực tế - cụ thể như nhiều nút văn bản loại bên cạnh nhau hoặc các nút rỗng nhập văn bản. Phương pháp normalize() loại bỏ các phương pháp này, tức là phương pháp này kết hợp các nút văn bản liền kề và xóa các nút trống.

Điều này có thể hữu ích khi bạn có mã khác dự kiến ​​cây DOM luôn trông giống như một cái gì đó được xây dựng từ một tài liệu XML thực tế.

này về cơ bản có nghĩa là phần tử XML sau

<foo>hello 
wor 
ld</foo> 

có thể được biểu diễn như thế này trong một nút denormalized:

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

Khi bình thường, nút sẽ trông như thế này

Element foo 
    Text node: "Hello world" 
3

Nó làm sạch mã từ các nút văn bản liền kề và các nút văn bản trống

0

Bình thường hóa phần tử gốc của tài liệu XML. Điều này đảm bảo rằng tất cả các nút văn bản dưới nút gốc được đưa vào một biểu mẫu "bình thường", có nghĩa là không có nút văn bản liền kề cũng như các nút văn bản trống trong tài liệu.

2

có rất nhiều cây DOM có thể tương ứng với cùng cấu trúc XML và mỗi cấu trúc XML có ít nhất một cây DOM tương ứng. Vì vậy, chuyển đổi từ DOM sang XML là surjective. Vì vậy, nó có thể xảy ra rằng:

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

Và không có cách nào để đảm bảo:

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

Nhưng chúng tôi muốn có nó bijective. Điều đó có nghĩa là mỗi cấu trúc XML tương ứng với một cây DOM cụ thể.

Vì vậy, bạn có thể xác định một tập hợp con của tất cả các cây DOM có thể có tính từ để tập hợp tất cả các cấu trúc XML có thể có.

# 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() 

Vì vậy, cây DOM chuẩn hóa có thể được xây dựng lại hoàn hảo từ biểu diễn XML của chúng. Không mất thông tin.

Các vấn đề liên quan