在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丑陋)。有更简单的方法吗?
答案 0 :(得分:3)
如果字符串不相关,你可以将它们放在单独的文件中,即使它是很多文件(这有什么问题?)。
如果您坚持使用一个文件,则可以提出一个唯一的分隔符,但在尝试随机访问特定条目时,您将付出代价。
数据文件应该几乎总是外部化(可能在一个单独的目录中)并在需要时读取,而不是硬编码到代码中。它更干净,减少了代码大小,减少了编译需求,并允许您使用相同的数据文件进行多次测试。大多数测试夹具以及构建和集成工具都支持外部文件。
或者,您可以编写从参数构建SOAP的代码或构建器,使这一切更加简洁(如果您愿意支付运行时成本)。 (更正:我看到你改变了你的样本,这对于自动生成来说是很讨厌的)。
答案 1 :(得分:-1)
使用StringBuilder怎么样?您始终可以使用StringBuilder.toString()来获取String ...