Обработка больших строковых констант в Java - PullRequest
5 голосов
/ 26 января 2011

Каков наилучший способ обработки больших строковых констант в Java?

Представьте, что у меня есть тестовое устройство для SOAP, и я хочу отправить следующую строку:

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

Я бы предпочел не ставить кавычки и плюсы вокруг каждой строки. Если я помещу это в файл, это будет дополнительный код, и было бы довольно сложно поместить несколько строк в один файл. У XML есть проблемы с выходом из текста (я должен использовать CDATA уродство). Есть ли более простой способ?

Ответы [ 2 ]

3 голосов
/ 26 января 2011

Если строки не связаны, вы можете поместить их в отдельные файлы, даже если файлов много (в чем проблема?).

Если вы настаиваете на одном файле, вы можете придумать уникальный разделитель, но вы будете платить цену, пытаясь получить произвольный доступ к определенной записи.

Файлы данных почти всегда должны бытьexternalized (вероятно, в отдельном каталоге) и читается при необходимости, а не жестко закодирован в код.Он чище, уменьшает размер кода, уменьшает потребность в компиляции и позволяет использовать один и тот же файл данных для нескольких тестов.Большинство тестовых устройств, а также инструменты сборки и интеграции поддерживают внешние файлы.

Или вы могли бы написать код или компоновщик, который создает SOAP из аргументов, делая все это намного более кратким (если вы готовы платить за время выполнения).(Исправление: я вижу, вы изменили свой образец, это было бы неприятно для автоматической генерации).

0 голосов
/ 26 января 2011

А как насчет использования StringBuilder?Вы всегда можете использовать StringBuilder.toString (), чтобы получить String ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...