在Java中处理大字符串常量

时间:2011-01-25 21:41:28

标签: java string

在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 个答案:

答案 0 :(得分:3)

如果字符串不相关,你可以将它们放在单独的文件中,即使它是很多文件(这有什么问题?)。

如果您坚持使用一个文件,则可以提出一个唯一的分隔符,但在尝试随机访问特定条目时,您将付出代价。

数据文件应该几乎总是外部化(可能在一个单独的目录中)并在需要时读取,而不是硬编码到代码中。它更干净,减少了代码大小,减少了编译需求,并允许您使用相同的数据文件进行多次测试。大多数测试夹具以及构建和集成工具都支持外部文件。

或者,您可以编写从参数构建SOAP的代码或构建器,使这一切更加简洁(如果您愿意支付运行时成本)。 (更正:我看到你改变了你的样本,这对于自动生成来说是很讨厌的)。

答案 1 :(得分:-1)

使用StringBuilder怎么样?您始终可以使用StringBuilder.toString()来获取String ...