2011-11-09 2 views
0

this 페이지를 통과 한 후 다음 코드를 작성하여 XSD 파일을 구문 분석했습니다. 그러나 나는 단지 루트 요소를 얻었고, 그 안에 중첩 된 요소를 얻는 방법에 관해서는 길을 잃었다. 코드 :XSD 구문 분석 및 중첩 요소 가져 오기

  XMLSchemaLoader loader = new XMLSchemaLoader(); 
      XSModel model = loader.loadURI(url.toURI().toString()); 
      XSNamedMap map = model.getComponents(XSConstants.ELEMENT_DECLARATION); //returns the root component 

      if(map!=null){ 
       for (int j=0; j<map.getLength(); j++) { 
        String name = map.item(j).getName(); //returns 'country' correctly.      
       } 
      } 

나는 전체 XSD를 게시하고 있지 않다, 그러나 이것은 구조입니다 :

<xsd:element name="country"> 
    <xsd:complexType> 
     <xsd:annotation> 
       <xsd:appinfo id="substring">No</xsd:appinfo>             
     </xsd:annotation> 
     <xsd:sequence minOccurs="1" maxOccurs="unbounded"> 
      <xsd:element name="states" minOccurs="1" maxOccurs="1" > 
       <xsd:complexType> 
        <xsd:annotation> 
          <xsd:appinfo id="substring">No</xsd:appinfo>             
        </xsd:annotation> 
        <xsd:sequence> 
         <xsd:element name="cities" minOccurs="1" maxOccurs="unbounded"> 
         </xsd:element> 
        </xsd:sequence> 
        <xsd:attribute name="name" type="xsd:string" /> 
       </xsd:complexType> 
      </xsd:element> 
     </xsd:sequence> 
     <xsd:attribute name="name" type="xsd:string"></xsd:attribute> 
    </xsd:complexType> 
</xsd:element> 

나는 모든 요소뿐 아니라 기본 요소를 읽어보고 방법을 잘하고 있지 않다 계속하려면. 도와 주셔서 감사합니다.

+1

사용자는 제목이 아닌 태그별로 탐색합니다. 주 태그'[java]'를 제목에 반복하는 것은 불필요하며 전체 [Java 질문 목록] (http://stackoverflow.com/questions/tagged/java)을 혼란스럽게 할뿐입니다. – BalusC

+0

수정 해 주셔서 감사합니다! – rgamber

답변

1

나는 XSNamedMap을 잘못 반복하려고합니다. country 요소 만 가져 오는 이유는 루트 요소이기 때문입니다. 아마도 XSNamespaceItem으로 내려 가서 getComponents으로 전화하여 XSNamedMap 개체의 다른 집합을 검색해야 할 것입니다.

XSD를 올바르게 구문 분석하지만 여전히 트리를 탐색해야합니다.

+1

그래서 XSNamedMap 대신 XSNamespaceItem을 가져와야합니다. 내가 참조. 감사. 나는 그것을 시도 할 것이다. – rgamber

+0

지도의 항목 인 XSElementDecl 내부의 XSComplexTypeDecl 내부의 XSParticles를 사용하여이 작업을 수행 할 수있었습니다. 감사. – rgamber

관련 문제