2010-01-19 4 views
3

XSOM 파서를 사용하여 요소에서 minOccurs 특성을 가져 오는 방법은 무엇입니까? 나는 복잡한 유형에 관련된 속성을 얻기 위해이 예제를 본 적이 :요소에서 XSOM을 사용하여 minOccurs 특성 가져 오기

private void getAttributes(XSComplexType xsComplexType){ 
    Collection<? extends XSAttributeUse> c = xsComplexType.getAttributeUses(); 
    Iterator<? extends XSAttributeUse> i = c.iterator();while(i.hasNext()){ 
     XSAttributeDecl attributeDecl = i.next().getDecl(); 
     System.out.println("type: "+attributeDecl.getType()); 
     System.out.println("name:"+attributeDecl.getName()); 
    } 
} 

그러나이 꺼져를 얻기를위한 올바른 방법을 알아낼 수 없습니다를 한는 요소 등 :

<xs:element name="StartDate" type="CommonDateType" minOccurs="0"/> 

감사합니다.

+0

액세서는'XSParticle' 클래스에,하지만 그건 당신이 뭘 하려는지에 연결하는 방법을 볼 수 없습니다. 내 문제는 정확히 – skaffman

+0

입니다. 누가 문서를 최신 상태로 유지할 것인가. 나는 404 링크를 여러개의 api 링크에 넣고있다. – Casey

+0

XSModelGroup에서 getChildren()을 호출하여 Particle의 배열을 가져올 수 있지만 XSElementDecl에서 getModelGroup()을 호출하면 null이 계속 반환됩니다. – Casey

답변

3

이렇게 직관적 인 것은 아니지만 XSElementDecl은 XSParticles에서 가져온 것입니다. 나는 다음과 같은 코드로 해당 속성을 검색 할 수 있었다 : xsom에서

public boolean isOptional(final String elementName) { 
    for (final Entry<String, XSComplexType> entry : getComplexTypes().entrySet()) { 
     final XSContentType content = entry.getValue().getContentType(); 
     final XSParticle particle = content.asParticle(); 
     if (null != particle) { 
      final XSTerm term = particle.getTerm(); 
      if (term.isModelGroup()) { 
       final XSParticle[] particles = term.asModelGroup().getChildren(); 
       for (final XSParticle p : particles) { 
        final XSTerm pterm = p.getTerm(); 
        if (pterm.isElementDecl()) { 
         final XSElementDecl e = pterm.asElementDecl(); 
         if (0 == e.getName().compareToIgnoreCase(elementName)) { 
          return p.getMinOccurs() == 0; 
         } 
        } 
       } 
      } 
      } 
    } 
    return true; 
} 
0

, 요소 선언 유형 XSElementDecl이다. 요소의 최소 및 최대 발생을 얻으려면 ParticleImpl이 필요합니다. 즉,

public int getMinOccurrence(XSElementDecl element){ 

int min=((ParticleImpl)element.getType()).getMinOccurs(); 
return min; 

} 

심판 : XSOM Particle ref

관련 문제