Tôi có một số Java (5.0) mã mà xây dựng một DOM từ khác nhau (cache) các nguồn dữ liệu, sau đó loại bỏ nút phần tử nhất định mà không bắt buộc, sau đó serializes kết quả vào một chuỗi XML sử dụng:Làm cách nào để tách các nút văn bản chỉ khoảng trắng từ một DOM trước khi tuần tự hóa?
// 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();
Tuy nhiên , vì tôi đang xóa một vài nút phần tử, tôi kết thúc với rất nhiều khoảng trắng thừa trong tài liệu tuần tự cuối cùng.
Có cách nào đơn giản để xóa/thu gọn khoảng trắng không liên quan khỏi DOM trước (hoặc trong khi) nó được tuần tự hóa thành chuỗi không?
Tôi thích giải pháp "mã duy nhất" này thậm chí còn tốt hơn so với giải pháp XSL, và giống như bạn đã nói có nhiều quyền kiểm soát hơn đối với việc loại bỏ nút, nếu cần. –
Nhân tiện, phương pháp này dường như chỉ hoạt động nếu trước tiên tôi gọi doc.normalize() trước khi thực hiện xóa nút. Tôi không chắc tại sao lại tạo nên sự khác biệt. –
Câu trả lời hay. Làm việc cho tôi ngay cả khi không bình thường hóa(). –