का उपयोग कर 1000 xml फ़ाइलों को एक में कैसे विलय करें मैं कई एक्सएमएल फ़ाइलों को एक में विलय करने की कोशिश कर रहा हूं। मैंने सफलतापूर्वक डीओएम में किया है, लेकिन यह समाधान कुछ फाइलों तक ही सीमित है। जब मैं इसे एकाधिक फाइलों पर चलाता हूं> 1000 मुझे java.lang.OutOfMemoryError मिल रहा है।जावा
क्या मैं हासिल करना चाहते हैं मैं कहाँ निम्न फ़ाइलें है
फ़ाइल 1:
<root>
....
</root>
फ़ाइल 2:
<root>
......
</root>
फ़ाइल n:
<root>
....
</root>
परिणामस्वरूप: उत्पादन:
<rootSet>
<root>
....
</root>
<root>
....
</root>
<root>
....
</root>
</rootSet>
यह मेरा वर्तमान कार्यान्वयन है:
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootSetElement = doc.createElement("rootSet");
Node rootSetNode = doc.appendChild(rootSetElement);
Element creationElement = doc.createElement("creationDate");
rootSetNode.appendChild(creationElement);
creationElement.setTextContent(dateString);
File dir = new File("/tmp/rootFiles");
String[] files = dir.list();
if (files == null) {
System.out.println("No roots to merge!");
} else {
Document rootDocument;
for (int i=0; i<files.length; i++) {
File filename = new File(dir+"/"+files[i]);
rootDocument = docBuilder.parse(filename);
Node tempDoc = doc.importNode((Node) Document.getElementsByTagName("root").item(0), true);
rootSetNode.appendChild(tempDoc);
}
}
मैं xslt, सैक्स के साथ एक बहुत प्रयोग किया है, लेकिन मैं कुछ कमी रखने के लिए लग रहे हैं। किसी भी मदद की अत्यधिक सराहना की जाएगी
क्या कोई कारण है कि आपको वास्तव में स्मृति में डोम रखने की आवश्यकता है? क्या आपको इस मामले में एक साधारण स्ट्रिंग कॉन्सटेनेशन की आवश्यकता है? –
सरल कॉन्सटेनेशन एक्सएमएल घोषणा को बनाए रखेगा यदि प्रत्येक व्यक्तिगत एक्सएमएल फ़ाइल विलय हो रही है। बिट वास्तव में सिद्धांत रूप में मैं एक्सएमएल फाइलों का एक सरल concatenation की तलाश में हूँ। – Andra
एकाधिक एक्सएमएल फाइलों को एक संग्रह में क्यों न डालें? यह एक फ़ाइल के रूप में समाप्त होता है। यदि फ़ाइल आकार या बैंडविड्थ अधिक महत्वपूर्ण है तो संकुचित/लिखने की गति महत्वपूर्ण है, तो इसे असंपीड़ित करें। –