2011-01-25 3 views
5

Java에서 큰 문자열 상수를 처리하는 가장 좋은 방법은 무엇입니까?Java에서 큰 문자열 상수 처리

<?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> 

차라리 모든 라인 따옴표 및 흑자를 넣어하지 않는 게 좋을 :

내가 SOAP에 대한 테스트 픽스처가 나는 다음과 같은 문자열을 보낼 것을 상상해보십시오. 파일에 넣으면 여분의 코드가되어 같은 파일에 여러 문자열을 넣는 것이 다소 어려울 것입니다. XML은 텍스트를 이스케이프하는 데 문제가 있습니다 (필자는 CDATA 추함을 사용해야합니다). 더 쉬운 방법이 있습니까?

+0

불충분 한 제안 :'\ n's로 줄 바꿈 인코딩 방법은 어떻습니까? –

+1

속성 파일에 넣을 수 있습니다. 여전히 코드를 작성해야하지만 그만큼 많지는 않습니다. 하나 이상의 문자열을 넣을 수 있습니다. – jny

+0

관련 : http://stackoverflow.com/questions/782810/working-with-large-text-snippets-in-java-source –

답변

-1

StringBuilder를 사용하면 어떨까요? 문자열을 가져 오기 위해 항상 StringBuilder.toString()을 사용할 수 있습니다 ...

+0

따옴표와 덧셈을 사용하는 것보다 훨씬 힘듭니다. 최소한 컴퓨터가 처리하는 것이 더 빠를 것입니다. – User1

+1

@ User1 - 더 빠를 수도 없습니다. 문자열의 일부는 클래스 파일에 포함되어 있습니다. 미리 조립 된 전체 문자열을 컴파일하는 대신 런타임에 어셈블해야합니다. –

3

문자열이 관련이 없다면 많은 파일 일지라도 별도의 파일에 넣을 수 있습니다 (그 문제점은 무엇입니까?).

하나의 파일을 고집한다면 고유 한 구분 기호를 사용할 수 있지만 임의로 특정 항목에 액세스하려고하면 가격이 책정됩니다.

데이터 파일은 코드에 하드 코드되지 않고 거의 항상 외부화 (별도의 디렉토리에있을 가능성이 있음)되어 필요할 때 읽을 수 있어야합니다. 더 깔끔하고 코드 크기를 줄이며 컴파일 필요성을 줄이며 여러 테스트에 동일한 데이터 파일을 사용할 수 있습니다. 대부분의 테스트 픽스처와 빌드 및 통합 도구는 외부 파일을 지원합니다.

또는 인수를 사용하여 SOAP을 빌드하는 코드 또는 빌더를 작성하여 런타임 비용을 지불하려는 경우이 모든 것을 훨씬 간결하게 작성할 수 있습니다. (교정 : 당신이 당신의 샘플을 바꾼 것을 보았을 때 이것은 자동 생성하기에 더러울 것이다).

+0

* 하나의 파일을 고집한다면 고유 한 구분 기호 * - 빈 줄을 구분 기호로 사용하고 있습니다. 읽기가 매우 쉽습니다. * 그러나 특정 항목에 무작위로 액세스하려고 할 때 가격을 지불하게됩니다. * - 일반적으로 이런 일은 결코 일어나지 않습니다. 프로그램에 넣으려고 생각하고 있었으므로 크기가 GB 단위가 아니므로 모든 항목을 유지할 수 있습니다 메모리에. – maaartinus

+0

@maaartinus : 빈 줄을 공백으로 사용할 수있는 형식으로 구분 기호로 빈 줄을 사용하는 것에 대해 매우주의해야합니다 (맞습니까?). 하나의 병합 오류 또는 부주의 한 잘라 내기 붙여 넣기 것들을 엉망으로 걸립니다. – Uri

+0

물론,하지만 조심합니다 : 사실, 내 형식으로, "단락"의 첫 번째 줄은 이름입니다. 나는 모든 이름에 enum을 사용한다. 내가 엉망으로 만들었을 경우, 이름이 누락되었거나 비슷한 것이 있습니다. 누락되거나 중복되거나 알 수없는 이름이 있으면로드하는 동안 예외가 발생합니다. – maaartinus