2012-06-05 26 views
1

我藉助WSDL4J,JDOM和Castor庫解析了wsdl文件。現在,我可以獲得複雜的類型,但仍然無法訪問序列中的元素。如何解析WSDL中的複雜類型以獲取Java中的基本元素?

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

}

任何建議?謝謝..

+0

您是否找到針對此問題的解決方案? – Damiox

回答

0

你需要做這樣的事情:

Sequence seq = ct.getSequence(); 

然後,一旦你這樣做,你可以得到在該序列中的元素,就像您在複雜的數據類型元素本身即

for(Element el : seq.getElements()) 
{ 
    //do stuff 
} 
相關問題