0

我们有这段代码在 SAAJ SOAP 消息中创建 XML 消息:

OdysseyMessageXML.addTextNode("<Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
);

消息完成后,它看起来像这样:

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tyl="http://www.tylertech.com/"><SOAP-ENV:Header/>
<SOAP-ENV:Body><tyl:OdysseyMsgExecution><tyl:OdysseyMessageXML>&lt;Message
 MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'&gt;&lt;CaseNumber&gt;T-4-CV-2011-004617&lt;/CaseNumber&gt;
&lt;/Message&gt;</tyl:OdysseyMessageXML>
<tyl:siteKey>NMODYSSEYMETRO</tyl:siteKey>
</tyl:OdysseyMsgExecution></SOAP-ENV:Body></SOAP-ENV:Envelope>

注意 FindCaseByCaseNumber 和 NodeID 周围的 ' 标记没有被转义。我需要做什么才能得到这样的结果:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:tyl="http://www.tylertech.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <tyl:OdysseyMsgExecution>
         <tyl:odysseyMessageXML>&lt;Message
 MessageType=&quot;FindCaseByCaseNumber&quot; NodeID=&quot;1&quot; 
ReferenceNumber=&quot;1&quot; UserID=&quot;1&quot; Source=&quot;
APIMessage&quot;&gt;
&lt;CaseNumber&gt;T-4-CV-2011-004617&lt;/CaseNumber&gt;
  &lt;/Message&gt;</tyl:odysseyMessageXML>
         <tyl:siteKey> NMODYSSEYMETRO </tyl:siteKey>
      </tyl:OdysseyMsgExecution>
   </soapenv:Body>
</soapenv:Envelope>

用 " 围绕 FindCaseByCaseNumber

谁能告诉我我们做错了什么?我们已经在代码 ''' 和 """ 的 addTextNode 部分进行了尝试,但未能成功使引号转义。

谢谢!莱斯利

编辑:

在我们创建消息的这部分代码中:

OdysseyMessageXML.addTextNode("<Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
); 

我们需要它(请参阅每个值周围的双引号):

OdysseyMessageXML.addTextNode("<Message
MessageType="FindCaseByCaseNumber" NodeID="1" ReferenceNumber="1"
UserID="1"
Source="APIMessage"><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
); 

不幸的是,这不是有效的 java 代码。通过在 FindCaseByCaseNumber 处放置另一个 " 来结束字符串。我们尝试放置 2 和 3 个双引号,以便在我们的最终消息中转义单个双引号。

更新:似乎接受我们请求的 API 是区分大小写的,我们有一个大写的 O 而不是小写的 o,这最终是问题所在,毕竟不是字符转义!

4

1 回答 1

0

您可以使用反斜杠转义字符串中的引号:

OdysseyMessageXML.addTextNode("<Message
MessageType=\"FindCaseByCaseNumber\" NodeID=\"1\" ReferenceNumber=\"1\"
UserID=\"1\"
Source=\"APIMessage\"><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
); 
于 2011-05-06T03:08:15.843 回答