private void ParseWsdlBindingOperation(WsdlBindingOperation op, ref bool bRpcBinding, ref bool bSoapEncoded)
{
Util.Log("WsdlParser.ParseWsdlBindingOperation");
int curDepth = _XMLReader.Depth;
bool binput = false;
bool boutput = false;
WsdlBindingOperationSection opSec = null;
ReadNextXmlElement();
while (_XMLReader.Depth > curDepth)
{
String elementName = _XMLReader.LocalName;
if (MatchingNamespace(s_wsdlSudsNamespaceString) && MatchingStrings(elementName, s_methodString))
{
op.methodAttributes = LookupAttribute(s_attributesString, null, true);
ReadNextXmlElement();
continue;
}
else if (MatchingNamespace(s_wsdlSoapNamespaceString) &&
MatchingStrings(elementName, s_operationString))
{
WsdlBindingSoapOperation soapOp = new WsdlBindingSoapOperation();
soapOp.soapAction = LookupAttribute(s_soapActionString, null, false);
soapOp.style = LookupAttribute(s_styleString, null, false);
if (soapOp.style == "rpc")
bRpcBinding = true;
{
}
op.soapOperation = soapOp;
ReadNextXmlElement();
continue;
}
else if (MatchingNamespace(s_wsdlNamespaceString))
{
if (MatchingStrings(elementName, s_inputString))
{
binput = true;
opSec = ParseWsdlBindingOperationSection(op, elementName, ref bSoapEncoded);
continue;
}
else if (MatchingStrings(elementName, s_outputString))
{
boutput = true;
ParseWsdlBindingOperationSection(op, elementName, ref bSoapEncoded);
continue;
}
else if (MatchingStrings(elementName, s_faultString))
{
ParseWsdlBindingOperationSection(op, elementName, ref bSoapEncoded);
continue;
}
}
// Ignore others elements such as annotations
SkipXmlElement();
}
// if no output section then the default name is just the op name.
if (opSec != null && binput && !boutput)
opSec.name = op.name;
}