Java SAAJ SOAP操作中的转义字符
我们有以下代码在SAAJ SOAP消息中创建XML消息: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
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><Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber>
</Message></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><Message
MessageType="FindCaseByCaseNumber" NodeID="1"
ReferenceNumber="1" UserID="1" Source="
APIMessage">
<CaseNumber>T-4-CV-2011-004617</CaseNumber>
</Message></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><Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber>
</Message></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><Message
MessageType="FindCaseByCaseNumber" NodeID="1"
ReferenceNumber="1" UserID="1" Source="
APIMessage">
<CaseNumber>T-4-CV-2011-004617</CaseNumber>
</Message></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”
);
我会接受这一点作为对原始问题的正确答案,即使我们在白费力气!