2009-05-12 15 views
21

वर्तमान पर किसी तत्व स्ट्रिंग ऑब्जेक्ट (युक्त एक्सएमएल) 'को बदलने' के लिए, मैं एक स्ट्रिंग वस्तु है कि XML तत्व शामिल होते हैं:कैसे एक मौजूदा JSP पेज

String carsInGarage = garage.getCars(); 

मैं अब के रूप में इस स्ट्रिंग पास करना चाहते हैं एक इनपुट/स्ट्रीम स्रोत (या किसी प्रकार का स्रोत), लेकिन मुझे यह सुनिश्चित नहीं है कि कौन सा चयन करना है और इसे कैसे कार्यान्वित करना है।

अधिकांश समाधान मैंने पैकेज आयात करने पर देखा है: javax.xml.transform और एक XML फ़ाइल (stylerXML.xml) और आउटपुट को HTML फ़ाइल (outputFile.html) पर स्वीकार करें (नीचे कोड देखें)।

try 
{ 
    TransformerFactory tFactory = TransformerFactory.newInstance(); 
    Transformer transformer = tFactory.newTransformer(new StreamSource("styler.xsl")); 

    transformer.transform(new StreamSource("stylerXML.xml"), new StreamResult(new FileOutputStream("outputFile.html"))); 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
} 

मैं स्ट्रिंग ऑब्जेक्ट और एक तत्व के लिए निर्गम (XSL का प्रयोग करके) एक मौजूदा JSP पेज के भीतर स्वीकार करना चाहते हैं। मैं बस यह नहीं जानता कि इसे कैसे कार्यान्वित किया जाए, यहां तक ​​कि ऊपर दिए गए कोड को भी देखा।

क्या कोई सलाह दे सकता है/सहायता कर सकता है। मैंने समाधान के लिए उच्च और निम्न खोज की है, लेकिन मैं कुछ भी बाहर खींच नहीं सकता।

try { 
    StringReader reader = new StringReader("<xml>blabla</xml>"); 
    StringWriter writer = new StringWriter(); 
    TransformerFactory tFactory = TransformerFactory.newInstance(); 
    Transformer transformer = tFactory.newTransformer(
      new javax.xml.transform.stream.StreamSource("styler.xsl")); 

    transformer.transform(
      new javax.xml.transform.stream.StreamSource(reader), 
      new javax.xml.transform.stream.StreamResult(writer)); 

    String result = writer.toString(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

उत्तर

56

एक StringReader और एक StringWriter का प्रयोग करें एक डोम दस्तावेज़ जिसमें आपका स्रोत होता है और इसे DOMSource का उपयोग करके ट्रांसफॉर्मर को पास कर देता है।

+0

हाय ब्रूनो, उस उत्कृष्ट उत्तर के लिए धन्यवाद। यह ठीक से संकलित कर रहा है :) हालांकि, मैं अभी भी स्क्रीन पर इसे प्रिंट करने में असमर्थ हूं। मैं वर्तमान में कोशिश कर रहा हूं: out.println (लेखक); लेकिन यह असफल रहा है। – Lycana

+0

शायद ट्रांसफॉर्म के साथ एक त्रुटि हुई ... यह वास्तव में कैसे असफल रहा है? –

+0

यह विफल रहता है क्योंकि ब्राउज़र पर कुछ भी मुद्रित नहीं होता है। मेरे प्रयास ब्लॉक के नीचे मेरे पास है: स्ट्रिंग परिणाम = writer.toString(); out.print ("

" + result + "
"); मैंने अपने एचटीएमएल बॉडी की सामग्री का निरीक्षण करने के लिए फायरबग नामक एक उपकरण भी स्थापित किया है। कुछ भी नहीं। – Lycana

0

कुछ बिंदु पर आप स्रोत बस एक ही स्ट्रिंग की तुलना में अधिक शामिल करने के लिए, या आप मैन्युअल रूप से एक्सएमएल आवरण तत्व उत्पन्न करने के लिए नहीं करना चाहती चाहते हैं, बनाने के लिए:

0

यह मेरे लिए काम किया।

String str = "<my>xml</my>"  
StreamSource src = new StreamSource(new StringReader(str)); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
Result res = new StreamResult(baos); 
transformer.transform(src, res); 
संबंधित मुद्दे