Convert complex XML to Cache Object
I use SoapUI 5.4.0 test Cache development web service, the parameters I need to send through SoapUI is as follows:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org">
<soapenv:Header/>
<soapenv:Body>
<tem:GetPatInfo>
<!--Optional:-->
<tem:QueryInfo>
<![CDATA[
<Request>
<CardNo>100000220002</CardNo>
<CardType></ CardType >
</Request>
]]>
</tem:QueryInfo>
</tem:GetPatInfo>
</soapenv:Body>
</soapenv:Envelope>
I have a Cache object:
Class ServiceTestPrd.Request.ReqPatInfo Extends (%RegisteredObject, %XML.Adaptor)
{
Property CardNo As %String;
Property CardType As %String;
}
My web service class is:
/// ServiceTestPrd.PrdServiceTest
Class ServiceTestPrd.PrdServiceTest Extends %SOAP.WebService [ ProcedureBlock ]
{
Parameter SERVICENAME = "PrdServiceTest";
Parameter NAMESPACE = "http://tempuri.org";
Parameter USECLASSNAMESPACES = 1;
Method GetPatInfo(QueryInfo As %Stream.GlobalCharacter) As %Stream.GlobalCharacter [ WebMethod ]
{
s reader = ##class(%XML.Reader).%New()
s status = reader.OpenStream(QueryInfo)
d reader.Rewind()
Do reader.CorrelateRoot("ServiceTestPrd.Request.ReqPatInfo")
s reqObj = ""
While (reader.Next(.tMessage,.status)) {
s reqObj=tMessage
}
s ^TMPPRD=reqObj
q QueryInfo
}
}
After sending the request using SoapUI, the returned message is:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>internal server error</faultstring>
<detail>
<error xmlns="http://tempuri.org">
<text>error #6301: SAX XML Analyzer error: expected end of tag 'CardType' while processing Anonymous Stream at line 3 offset 14</text>
</error>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
How do I get the value of CardNo and CardType? thank you!