2011-07-29 2 views
5

में गतिशील एक्सएमएल निर्माण मैं समय सारिणी प्रदर्शित करने के लिए जावा में एक एक्सएमएल फ़ाइल बनाने की कोशिश कर रहा हूं। मैंने अपनी एक्सएमएल फ़ाइल के लिए एक डीटीडी बनाई है और मेरे पास एक्सएसएल फ़ाइल है जो मैं एक्सएमएल को बदलने के लिए उपयोग करना चाहता हूं। मुझे नहीं पता कि कैसे जारी रखना है।जावा

जो मैंने अभी तक कोशिश की है वह कुछ बटन पर क्लिक करें, एक सर्वलेट कहा जाता है जो एक्सएमएल फ़ाइल की सामग्री की स्ट्रिंग उत्पन्न करता है (एक्सएमएल के गतिशील हिस्सों को स्ट्रिंग में डालता है। अब मेरे पास एक स्ट्रिंग है एक्सएमएल फाइल की सामग्री। अब मैं अपने सर्वर पर एक एक्सएसएल फ़ाइल का उपयोग कर एक्सएमएल फ़ाइल को बदलना चाहता हूं और परिणाम को उस पृष्ठ में प्रदर्शित करना चाहता हूं जिसे सर्वलेट कहा जाता है (इसे AJAX के माध्यम से कर रहा है)

मैं हूं सुनिश्चित नहीं है कि मैं दिशा में हूं, शायद मुझे शुरुआत से स्ट्रिंग फॉर्म में एक्सएमएल कोड भी नहीं बनाना चाहिए। तो मेरा सवाल यह है कि, मैं यहां से कैसे जारी रहूं? एक्सएसएल का उपयोग करके मैं XML स्ट्रिंग को कैसे बदलूं फ़ाइल, और इसे AJAX कॉल के जवाब के रूप में भेजें ताकि मैं जेनरेट कोड को पृष्ठ में लगा सकूं? या यदि ऐसा करने का तरीका नहीं है यह, मैं एक ही परिणाम उत्पन्न करने के एक अलग तरीके से एक गतिशील एक्सएमएल फ़ाइल कैसे बना सकता हूं?

+0

क्या आप एक्सएमएलटी करने के लिए एक्सएमएल, या एक विधि बनाने की विधि चाहते हैं? – atrain

+0

मुझे सच में यकीन नहीं है ... मैं थोड़ा खो गया हूं, शायद दोनों? – Nayish

+0

क्या डेटा एक्सएमएल के रूप में संग्रहीत है? – atrain

उत्तर

5

आप इसके लिए JAXP का उपयोग कर सकते हैं। यह मानक जावा एसई एपीआई का हिस्सा है।

StringReader xmlInput = new StringReader(xmlStringWhichYouHaveCreated); 
InputStream xslInput = getServletContext().getResourceAsStream("file.xsl"); // Or wherever it is. As long as you've it as an InputStream, it's fine. 

Source xmlSource = new StreamSource(xmlInput); 
Source xslSource = new StreamSource(xslInput); 
Result xmlResult = new StreamResult(response.getOutputStream()); // XML result will be written to HTTP response. 

Transformer transformer = TransformerFactory.newInstance().newTransformer(xslSource); 
transformer.transform(xmlSource, xmlResult); 
+0

ग्रेट! यह पूरी तरह से काम किया, thanx – Nayish

+0

आपका स्वागत है। – BalusC

1

इस पर निर्भर करता है कि आपका एक्सएमएल कितना जटिल और बड़ा होगा, मैं दो विकल्पों का सुझाव दूंगा। छोटे, सरल संरचनाओं के लिए जावा के डीओएम कार्यान्वयन (Document) पर्याप्त होगा।

यदि आपका एक्सएमएल अधिक विस्तृत है तो मैं JAXB पर देखता हूं। लाभ यह है कि ऐसे उपकरण हैं जो स्वचालित रूप से एक्सएमएल स्कीमा (एक्सएसडी) से जावा कक्षाएं बनाते हैं। तो आपको पहले अपने डीटीडी को एक्सएसडी में बदलना होगा, लेकिन यह कोई समस्या नहीं होनी चाहिए। आप सादे डेटा ट्रांसफर ऑब्जेक्ट्स (संबंधित एक्सएमएल तत्वों के मानों के लिए गेटर्स/सेटर्स के साथ सादे ऑब्जेक्ट्स) के साथ समाप्त होते हैं और पार्सिंग/एन्कोडिंग प्लस सेटिंग नेमस्पेस आपके लिए सही तरीके से किया जाता है। यह काफी सुविधाजनक है लेकिन सरल एक्सएमएल संरचनाओं के लिए एक ओवरकिल भी हो सकता है।

दोनों मामलों में, आप Document उदाहरण के साथ समाप्त हो जाएंगे कि आप अंत में JAXP का उपयोग करके बदल सकते हैं।

+0

एपीआई द्वारा आपका क्या मतलब है? अतिरिक्त पुस्तकालय? तब मेरे पास अच्छी खबर है, इन प्रौद्योगिकियों में आपके मानक जेडीके के साथ अंतर्निहित कार्यान्वयन शामिल हैं। – emboss

0

अपाचे XMLBeans करने और एक्सएमएल से serializing के लिए एक अच्छा समाधान कर रहे हैं।

  • डाउनलोड XMLBeans से http://www.apache.org/dyn/closer.cgi/xmlbeans/binaries
  • उपयोग XMLBeans inst2xsd निष्पादन योग्य (बिन dir0 में XMLBeans चींटी कार्य एक XSD
  • उपयोग करने के लिए अपने DTD कन्वर्ट करने के लिए में XSD कन्वर्ट करने के लिए: यहाँ आप क्या करने की जरूरत है

    : वर्ग है जो आप अपने अनुप्रयोग

यहाँ में उपयोग कर सकते हैं कक्षाएं बनाने के लिए XMLBeans उपयोग करने के लिए एक उदाहरण चींटी स्क्रिप्ट है 10

अब आप अच्छा जावा वर्गों जो आप साफ कोड के लिए उपयोग अपने DB में संग्रहीत डेटा से XML बनाने के लिए कर सकते हैं होगा। एक्सएसएलटी के लिए बलुस के जवाब का प्रयोग करें।