Java SAAJ SOAP操作中的转义字符

Java SAAJ SOAP操作中的转义字符,java,soap,escaping,saaj,Java,Soap,Escaping,Saaj,我们有以下代码在SAAJ SOAP消息中创建XML消息: OdysseyMessageXML.addTextNode("<Message MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1' UserID='1' Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>" ); O

我们有以下代码在SAAJ SOAP消息中创建XML消息:

OdysseyMessageXML.addTextNode("<Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
);
OdysseyMessageXML.addTextNode(“T-4-CV-2011-004617”
);
消息完成后,它看起来如下所示:

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

消息
MessageType='FindCaseByCaseNumber'节点ID='1'引用编号='1'
UserID='1'
来源=“APIMessage”案例编号RT-4-CV-2011-004617/案例编号
/信息
恩莫西地铁
请注意,FindCaseByCaseNumber和NodeID周围的“标记”不会转义。我需要做什么才能得到这样的结果:

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

消息
MessageType=“FindCaseByCaseNumber”NodeID=“1”
ReferenceNumber=“1”UserID=“1”源=”
APIMessage“
案件编号RT-4-CV-2011-004617/案件编号
/信息
恩莫西地铁
使用“按案例编号查找的案例”

有人能告诉我我们做错了什么吗?我们尝试了代码“”和“”的addTextNode部分,但未能成功地转义引号

谢谢! 莱斯利

编辑:

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

OdysseyMessageXML.addTextNode("<Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
); 
OdysseyMessageXML.addTextNode(“T-4-CV-2011-004617”
); 
我们需要它(请参见每个值的双引号):

OdysseyMessageXML.addTextNode(“T-4-CV-2011-004617”
); 
不幸的是,这不是有效的java代码。通过在FindCaseByCaseNumber处放置另一个“结束字符串。我们尝试放置2和3个双引号,以便在最后一条消息中转义一个双引号

更新:
似乎接受我们请求的API是区分大小写的,我们使用大写字母O而不是小写字母O,这最终是问题所在,而不是字符转义!

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

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

我会接受这一点作为对原始问题的正确答案,即使我们在白费力气!