दिलचस्प पोस्ट
मैं हमेशा टीएफएस में एक विशिष्ट फाइल की जांच कैसे रोक सकता हूं पायथन के साथ SSL प्रमाण पत्र मान्य करें एंड्रॉइड – एसएमएस प्रसारण रिसीवर PHP के उपयोग से छवि के साथ पारदर्शी पीएनजी कैसे मर्ज करें? एप बंद होने पर एंड्रॉइड अलार्म मैनेजर कुछ डिवाइस पर काम नहीं कर रहा है डिफ़ॉल्ट के लिए चयन मान रीसेट करें ArrayAdapter <myClass> का उपयोग कैसे करें कैसे सादे सी में यूटीएफ -8 का पता लगा सकता है? XML फ़ाइल में पार्स किए गए और बदलना DOM दस्तावेज़ को कैसे सहेजें? जावास्क्रिप्ट का उपयोग करने के लिए मैं अपने यूएस-885 9 -1 के समकक्ष विशेष यूटीएफ -8 वर्ण कैसे बदलूं? LINQ में समूह द्वारा स्ट्रिंग्स को स्टोर करने के लिए डेटा टाइप "टेक्स्ट" का उपयोग करने की कोई डाउनसाइड्स? UITableView की लोडिंग के अंत का पता लगाने के लिए रीडायरेक्ट और नेविगेशन / अग्रेषित और क्या इस्तेमाल करने के दौरान क्या अंतर है? स्ट्रिंग से केवल संख्याएं प्राप्त करने की क्वेरी

जावा के साथ डीओएम पार्सिंग में सामान्यकरण – यह कैसे काम करता है?

मैंने इस ट्यूटोरियल पर एक डोम पार्सर के लिए कोड में नीचे की रेखा देखी।

doc.getDocumentElement().normalize(); 

हम यह सामान्यीकरण क्यों करते हैं?
मैंने डॉक्स पढ़ा लेकिन मैं एक शब्द समझ नहीं सका।

इस नोड के नीचे उप-पेड़ की पूरी गहराई में सभी टेक्स्ट नोड्स डालता है

ठीक है, तो कोई मुझे दिखा सकता है (अधिमानतः एक तस्वीर के साथ) इस पेड़ की तरह दिखता है?

क्या कोई मुझे समझा सकता है कि सामान्यीकरण की आवश्यकता क्यों है?
अगर हम सामान्य नहीं करते हैं तो क्या होगा?

वेब के समाधान से एकत्रित समाधान "जावा के साथ डीओएम पार्सिंग में सामान्यकरण – यह कैसे काम करता है?"

शेष वाक्य है:

जहां केवल संरचना (उदाहरण के लिए, तत्वों, टिप्पणियां, प्रसंस्करण निर्देश, सीडीएटीए अनुभाग, और इकाई संदर्भ) पाठ नोड्स को अलग करती हैं, यानी आसन्न पाठ नोड्स न ही खाली पाठ नोड्स हैं

इसका मूल अर्थ है कि निम्नलिखित XML तत्व

 <foo>hello wor ld</foo> 

इस तरह एक denormalized नोड में प्रतिनिधित्व किया जा सकता है:

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

सामान्यीकृत होने पर, नोड ऐसा दिखेगा

 Element foo Text node: "Hello world" 

और वह भी विशेषताओं के लिए जाता है: <foo bar="Hello world"/> , टिप्पणियां, आदि।

सरल में, सामान्यीकरण रिडंडन्सीज की कमी है
अनावश्यकताओं के उदाहरण:
ए) रूट / दस्तावेज़ टैग के बाहर सफेद स्थान (… <दस्तावेज़> </ document> …)
ख) प्रारंभ टैग (<…>) और अंत टैग (</ …>) के भीतर सफेद स्थान
सी) विशेषताओं और उनके मूल्यों के बीच सफेद स्थान (यानी कुंजी नाम और = "के बीच रिक्त स्थान)
घ) अतिरेखित नाम स्थान घोषणाएं
ई) विशेषताओं और टैगों के ग्रंथों में लाइन ब्रेक / व्हाइट स्पेस
च) टिप्पणियां आदि …

@ JBNizet के अधिक तकनीकी उपयोगकर्ताओं के उत्तर के लिए एक विस्तार के रूप में, यहां संगठन के कार्यान्वयन क्या है? org.w3c.dom.Node इंटरफ़ेस की तरह दिखता है, आपको यह विचार मिलता है कि यह कैसे वास्तव में काम करता है ।

 public void normalize() { // No need to normalize if already normalized. if (isNormalized()) { return; } if (needsSyncChildren()) { synchronizeChildren(); } ChildNode kid; for (kid = firstChild; kid != null; kid = kid.nextSibling) { kid.normalize(); } isNormalized(true); } 

यह सभी नोड्स को पुनरावृत्त रूप से kid.normalize() और बच्चे को कॉल करता है। kid.normalize()
इस तंत्र को org.apache.xerces.dom.ElementImpl में ओवरराइड किया गया है

 public void normalize() { // No need to normalize if already normalized. if (isNormalized()) { return; } if (needsSyncChildren()) { synchronizeChildren(); } ChildNode kid, next; for (kid = firstChild; kid != null; kid = next) { next = kid.nextSibling; // If kid is a text node, we need to check for one of two // conditions: // 1) There is an adjacent text node // 2) There is no adjacent text node, but kid is // an empty text node. if ( kid.getNodeType() == Node.TEXT_NODE ) { // If an adjacent text node, merge it with kid if ( next!=null && next.getNodeType() == Node.TEXT_NODE ) { ((Text)kid).appendData(next.getNodeValue()); removeChild( next ); next = kid; // Don't advance; there might be another. } else { // If kid is empty, remove it if ( kid.getNodeValue() == null || kid.getNodeValue().length() == 0 ) { removeChild( kid ); } } } // Otherwise it might be an Element, which is handled recursively else if (kid.getNodeType() == Node.ELEMENT_NODE) { kid.normalize(); } } // We must also normalize all of the attributes if ( attributes!=null ) { for( int i=0; i<attributes.getLength(); ++i ) { Node attr = attributes.item(i); attr.normalize(); } } // changed() will have occurred when the removeChild() was done, // so does not have to be reissued. isNormalized(true); } 

आशा है कि यह आपको कुछ समय बचाता है।