2011-01-25 13 views
5

जावा में बड़े स्ट्रिंग स्थिरांक को संभालने का सबसे अच्छा तरीका क्या है?जावा में बड़े स्ट्रिंग कॉन्स्टेंट हैंडलिंग

कल्पना कीजिए कि मैं सोप के लिए एक परीक्षण स्थिरता है और मैं निम्नलिखित स्ट्रिंग भेजना चाहते हैं:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <QuoteRequest xmlns="https://www.bcponline.co.uk"> 
      <header> 
       <SourceCode>BN325</SourceCode> 
       <MessageSource>B2B3</MessageSource> 
       <Profile>B08A</Profile> 
       <Password>AP3U86V</Password> 
       <OperatorID>flightline</OperatorID> 
       <ShowWebOptions>0</ShowWebOptions> 
      </header> 
      <serviceSelection> 
       <ServiceProviderCode></ServiceProviderCode> 
       <ProductCode>CarParking</ProductCode> 
       <IATACode>lgw</IATACode> 
      </serviceSelection> 
      <quoteDetails> 
       <DepartureDate>21-Jun-2005</DepartureDate> 
       <DepartureTime>07:00</DepartureTime> 
       <ReturnDate>28-Jun-2005</ReturnDate> 
       <ReturnTime>07:00</ReturnTime> 
       <QuoteReference></QuoteReference> 
       <NoPax>1</NoPax> 
      </quoteDetails> 
      <sPostCode></sPostCode> 
     </QuoteRequest> 
    </soap:Body> 
</soap:Envelope> 

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

+0

लंगड़ा सुझाव: लाइन ब्रेक को एन्कोड करने के बारे में \ \ n के रूप में कैसे? –

+1

आप इसे गुण फ़ाइल में डाल सकते हैं। अभी भी कोड लिखना है, लेकिन इतना नहीं है और आप इसमें एक से अधिक स्ट्रिंग डाल सकते हैं – jny

+0

संबंधित: http://stackoverflow.com/questions/782810/working-with-large-text-snippets-in-java- स्रोत –

उत्तर

-1

स्ट्रिंगबिल्डर का उपयोग करने के बारे में क्या? स्ट्रिंग प्राप्त करने के लिए आप हमेशा StringBuilder.toString() का उपयोग कर सकते हैं ...

+0

यह उद्धरण और प्लस का उपयोग करने से भी कठिन लगता है। कंप्यूटर को संसाधित करने के लिए कम से कम यह तेज़ होगा। – User1

+1

@ उपयोगकर्ता 1 - यह भी तेज़ नहीं होगा। स्ट्रिंग के छोटे टुकड़े अपने वर्ग फ़ाइल में होगा, जो सिर्फ पूरे पूर्व इकट्ठे स्ट्रिंग में संकलित होने के बजाय कार्यावधि में इकट्ठे करने के लिए, के लिए होगा। –

3

यदि तार असंबद्ध हैं, तो आप उन्हें अलग-अलग फाइलों में डाल सकते हैं भले ही यह बहुत सारी फाइलें हों (उसमें समस्या क्या है?)।

यदि आप एक फ़ाइल पर जोर देते हैं, तो आप एक अद्वितीय डिलीमीटर के साथ आ सकते हैं, लेकिन आप एक विशिष्ट प्रविष्टि को यादृच्छिक रूप से एक्सेस करने का प्रयास करते समय कीमत का भुगतान करेंगे।

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

या, आप कोड या निर्माता लिख ​​सकते हैं जो तर्क से SOAP बनाता है, यह सब बहुत अधिक संक्षिप्त (यदि आप रनटाइम लागत का भुगतान करने के इच्छुक हैं) बनाते हैं। (सुधार: मैंने देखा है कि आपने अपना नमूना बदल दिया है, यह ऑटो-जेनरेट करने के लिए बुरा होगा)।

+0

* यदि आप एक फाइल पर जोर देते हैं, तो आपके सामने एक अनूठा साथ आ सकता है delimiter * - मैं इसे एक खाली रेखा के साथ delimiter के रूप में उपयोग कर रहा हूँ, यह पढ़ने के लिए बहुत आसान है। जब बेतरतीब ढंग से एक विशिष्ट प्रविष्टि तक पहुँचने का प्रयास * लेकिन आप एक मूल्य का भुगतान किया जाएगा * -। यह सामान्य रूप से कभी नहीं होता है, वह कार्यक्रम में यह लगाने के बारे में सोच रहा था, तो यह निश्चित रूप से आकार में जीबी के क्रम में नहीं है, तो वह यह सब रख सकते याद में। – maaartinus

+0

@मार्टिनस: मैं एक प्रारूप में एक डिलीमीटर के रूप में एक खाली रेखा का उपयोग करने के बारे में बहुत सावधान रहूंगा जो खाली रेखाओं को व्हाइटस्पेस के रूप में अनुमति देता है (क्या यह सही है?)। यह एक विलय त्रुटि या गंदे चीजों को एक लापरवाही कट-पेस्ट लेता है। – Uri

+0

ज़रूर, लेकिन मैं सावधान हूँ: वास्तव में, मेरी प्रारूप में, एक "पैरा" की पहली पंक्ति यह नाम है। मैं सभी नामों के लिए एक enum का उपयोग करें। अगर मैं इसे गड़बड़ कर देता हूं, तो एक लापता नाम या ऐसा कुछ है। किसी भी लापता, दोहराया, या अज्ञात नाम लोड होने के दौरान एक अपवाद को जन्म देती है। – maaartinus

संबंधित मुद्दे