मैं कुछ जावा (5.0) कोड है कि विभिन्न (कैश्ड) डेटा स्रोतों से एक डोम निर्माण करती है, तो, कुछ तत्व नोड्स की आवश्यकता नहीं है निकालता है तो का उपयोग कर एक XML स्ट्रिंग में परिणाम को धारावाहिक:सीरियलाइजेशन से पहले एक डोम से व्हाइटस्पेस-केवल टेक्स्ट नोड्स को कैसे पट्टी करें?
// Serialize DOM back into a string
Writer out = new StringWriter();
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "no");
tf.transform(new DOMSource(doc), new StreamResult(out));
return out.toString();
हालांकि , क्योंकि मैं कई तत्व नोड्स को हटा रहा हूं, इसलिए मैं अंतिम धारावाहिक दस्तावेज़ में बहुत से अतिरिक्त व्हाइटस्पेस के साथ समाप्त होता हूं।
क्या डीओएम से पहले (या थोड़ी देर) इसे स्ट्रिंग में क्रमबद्ध करने के लिए बाहरी सफेद जगह को हटाने/संक्षिप्त करने का कोई आसान तरीका है?
मुझे यह "कोड केवल" समाधान XSL समाधान से भी बेहतर पसंद है, और जैसा कि आपने कहा है कि यदि आवश्यक हो तो नोड हटाने पर थोड़ा अधिक नियंत्रण है। –
वैसे, यह विधि केवल काम करने लगती है अगर मैं पहले नोड हटाने से पहले doc.normalize() को कॉल करता हूं। मुझे यकीन नहीं है कि इससे कोई फर्क क्यों पड़ता है। –
उत्कृष्ट जवाब। सामान्य के बिना भी मेरे लिए काम करता है()। –