如何在WSDL中解析complextype以在Java中获取其中的基本元素?

时间:2012-06-05 08:39:23

标签: java wsdl castor complextype wsdl4j

我在WSDL4J,JDOM和Castor库的帮助下解析了wsdl文件。现在,我可以获得复杂的类型,但仍然无法访问其序列中的元素。

<xs:element name="AddInstanceGroupsResult">
    <xs:complexType>

        <xs:annotation>
          <xs:documentation><![CDATA[
              <p>Output from an AddInstanceGroups call.</p>
           ]]></xs:documentation>
        </xs:annotation>

      <xs:sequence>
        <xs:element name="JobFlowId" type="tns:XmlStringMaxLen256" minOccurs="0">

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p>The job flow ID in which the instance groups are added.</p>
             ]]></xs:documentation>
          </xs:annotation>

        </xs:element>
        <xs:element name="InstanceGroupIds" type="tns:InstanceGroupIdsList" minOccurs="0">

          <xs:annotation>
            <xs:documentation><![CDATA[
                <p>Instance group IDs of the newly created instance groups.</p>
             ]]></xs:documentation>
          </xs:annotation>

        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

例如,我可以将AddInstanceGroupsResult作为复杂类型到达,但我无法获取其中的基本元素(JobFlowId和InstanceGroupIds)..

case Structure.MODELGROUP:
Group modelGroup = (Group)ct;
ContentModelGroup contentModel = modelGroup.getContentModelGroup();
int count = contentModel.getParticleCount();
for (int n=0; n< count; n++){
    ElementDecl elementDecl2 = (ElementDecl)contentModel.getParticle(n);


    result.add(elementDecl2.getName());
    resultLong.add(parseParameterName(elementDecl2.getName()));
    resultType.add(elementDecl2.getType().getName());

}

有什么建议吗?感谢..

1 个答案:

答案 0 :(得分:0)

您需要执行以下操作:

Sequence seq = ct.getSequence();

然后,一旦你完成了,你可以像复杂类型本身中的元素那样获得该序列中的元素,即

for(Element el : seq.getElements())
{
     //do stuff
}