如何在XSOM Java库中获取Use Attribute

时间:2022-05-15 03:13:53

I am using XSOM java library to parse XML Schema. I don't know how to get the attribute "Use" for the Attribute Declaration. Here is my code to get all attribute declarations for the CompleType

我正在使用XSOM java库来解析XML Schema。我不知道如何为属性声明获取属性“使用”。这是我的代码,用于获取CompleType的所有属性声明

// To get ComplexType attributes
private static void getComplexAttributes(XSComplexType xsComplexType) {
    Collection<? extends XSAttributeUse> c = xsComplexType.getAttributeUses();
    Iterator<? extends XSAttributeUse> i = c.iterator();
    while(i.hasNext()) {
        // i.next is attributeUse
        XSAttributeUse attributeUse = i.next();
        XSAttributeDecl attributeDecl = i.next().getDecl();
        System.out.println("Attributes for CoplexType: " + xsComplexType.getName());

        parseAttribute(attributeDecl, attributeUse);    
    }
}

// Get attribute info
private static void parseAttribute(XSAttributeDecl attributeDecl, XSAttributeUse attUse) { 
    System.out.println("Attribute Name: " + attributeDecl.getName());
    XSSimpleType xsAttributeType = attributeDecl.getType();
    System.out.println("Attribute Type: " + xsAttributeType.getName());
    if (attUse.isRequired())
        System.out.println("Use: Required");
    else
        System.out.println("Use: Optional");
    System.out.println("Fixed: " + attributeDecl.getFixedValue());
    System.out.println("Default: " + attributeDecl.getDefaultValue());
}

And I get this error: java.util.NoSuchElementException

我收到此错误:java.util.NoSuchElementException

Pointing to the line

指着这条线

XSAttributeDecl attributeDecl = i.next().getDecl();

Can anyone help? do I miss anything?

有人可以帮忙吗?我什么都错过了?

Thanks

谢谢

1 个解决方案

#1


1  

I fixed the problem thanks

我解决了问题,谢谢

the right code here:

正确的代码在这里:

// To get ComplexType attributes
private static void getComplexAttributes(XSComplexType xsComplexType) {
    Collection<? extends XSAttributeUse> c = xsComplexType.getAttributeUses();
    Iterator<? extends XSAttributeUse> i = c.iterator();
    while(i.hasNext()) {
       // i.next is attributeUse
       XSAttributeUse attUse = i.next();
       System.out.println("Attributes for CoplexType:"+ xsComplexType.getName());

       parseAttribute(attUse);      
    }
}

// To Get attribute info

private static void parseAttribute(XSAttributeUse attUse) { 
    XSAttributeDecl attributeDecl = attUse.getDecl();
    System.out.println("Attribute Name:"+attributeDecl.getName());
    XSSimpleType xsAttributeType = attributeDecl.getType();
    System.out.println("Attribute Type: " + xsAttributeType.getName());
    if (attUse.isRequired())
        System.out.println("Use: Required");
    else
        System.out.println("Use: Optional");
    System.out.println("Fixed: " + attributeDecl.getFixedValue());
    System.out.println("Default: " + attributeDecl.getDefaultValue());
}

#1


1  

I fixed the problem thanks

我解决了问题,谢谢

the right code here:

正确的代码在这里:

// To get ComplexType attributes
private static void getComplexAttributes(XSComplexType xsComplexType) {
    Collection<? extends XSAttributeUse> c = xsComplexType.getAttributeUses();
    Iterator<? extends XSAttributeUse> i = c.iterator();
    while(i.hasNext()) {
       // i.next is attributeUse
       XSAttributeUse attUse = i.next();
       System.out.println("Attributes for CoplexType:"+ xsComplexType.getName());

       parseAttribute(attUse);      
    }
}

// To Get attribute info

private static void parseAttribute(XSAttributeUse attUse) { 
    XSAttributeDecl attributeDecl = attUse.getDecl();
    System.out.println("Attribute Name:"+attributeDecl.getName());
    XSSimpleType xsAttributeType = attributeDecl.getType();
    System.out.println("Attribute Type: " + xsAttributeType.getName());
    if (attUse.isRequired())
        System.out.println("Use: Required");
    else
        System.out.println("Use: Optional");
    System.out.println("Fixed: " + attributeDecl.getFixedValue());
    System.out.println("Default: " + attributeDecl.getDefaultValue());
}