1

我在 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());

}

有什么建议么?谢谢..

4

1 回答 1

0

您将需要执行以下操作:

Sequence seq = ct.getSequence();

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

for(Element el : seq.getElements())
{
     //do stuff
}
于 2015-06-25T13:15:50.090 回答