Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取XSSimpleType的错误XSOM基类型_Java_Xsom - Fatal编程技术网

Java 获取XSSimpleType的错误XSOM基类型

Java 获取XSSimpleType的错误XSOM基类型,java,xsom,Java,Xsom,我有一个简单的xsd <xs:element name="shoesize" type="shoetype"/> <xs:complexType name="shoetype"> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="attrType" /> </xs:extension> </x

我有一个简单的xsd

<xs:element name="shoesize" type="shoetype"/>
<xs:complexType name="shoetype">
<xs:simpleContent>
<xs:extension base="xs:integer">
  <xs:attribute name="country" type="attrType" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>

<xs:simpleType name="attrType">
<xs:restriction base="xs:string">
    <xs:enumeration value="abc" />
    <xs:enumeration value="xyz" />
</xs:restriction>
</xs:simpleType>
我正在尝试使用以下代码检索complexType“shoetype”的基类型

void parseComplexType(XSComplexType xsComplexType, StringBuffer stringBuffer) {
    XSContentType xsContentType = xsComplexType.getContentType();
    if (xsContentType != null) {
        XSParticle xsParticle = xsContentType.asParticle();
        if (xsParticle != null) {
            parseParticle(xsParticle, stringBuffer);
        } else if (xsContentType.asSimpleType() != null) {
            stringBuffer.append(parseSimpleType(xsContentType.asSimpleType()));
        }
    } 
    return;
}

String parseSimpleType(XSSimpleType xsSimpleType) {
    if (xsSimpleType.isPrimitive()) {
        return(xsSimpleType.getName());
    } 
    if (xsSimpleType.asRestriction() != null) {
        XSRestrictionSimpleType xsRestrictionSimpleType = xsSimpleType.asRestriction();
        Iterator<XSFacet> facetIterator = xsRestrictionSimpleType.iterateDeclaredFacets();
        if (facetIterator != null) {

            // Special Case
            if (!facetIterator.hasNext()) {
                return xsSimpleType.getBaseType().getName();
            }
            StringBuffer strBuffer = new StringBuffer();
            strBuffer.append("[");
            while (facetIterator.hasNext()) {
                XSFacet xsFacet = facetIterator.next();
                if (xsFacet.getName().equals(XSFacet.FACET_ENUMERATION)) {
                    strBuffer.append(xsFacet.getValue() + (facetIterator.hasNext() ? " / " : ""));
                } else if (xsFacet.getName()
                        .equals(XSFacet.FACET_MAXLENGTH)) {
                    strBuffer.append(xsSimpleType.getBaseType().getName());
                    break;
                } else if (xsFacet.getName().equals(
                        XSFacet.FACET_FRACTIONDIGITS)) {
                    strBuffer.append(xsSimpleType.getBaseType().getName());
                    break;
                } else if (xsFacet.getName().equals(
                        XSFacet.FACET_MINEXCLUSIVE)) {
                    strBuffer.append(xsSimpleType.getBaseType().getName());
                    break;
                } else if (xsFacet.getName().equals(
                        XSFacet.FACET_MAXEXCLUSIVE)) {
                    strBuffer.append(xsSimpleType.getBaseType().getName());
                    break;
                } else if (xsFacet.getName().equals(
                        XSFacet.FACET_MININCLUSIVE)) {
                    strBuffer.append(xsSimpleType.getBaseType().getName());
                    break;
                } else if (xsFacet.getName().equals(
                        XSFacet.FACET_MAXINCLUSIVE)) {
                    strBuffer.append(xsSimpleType.getBaseType().getName());
                    break;
                } else if (xsFacet.getName().equals(
                        XSFacet.FACET_LENGTH)) {
                    strBuffer.append(xsSimpleType.getBaseType().getName());
                    break;
                } else if (xsFacet.getName().equals(
                        XSFacet.FACET_WHITESPACE)) {

                    // ignore
                    break;
                } else {

                    // Log this type
                    System.out.println(xsFacet.getName());
                }
            }
            strBuffer.append("]");
            return strBuffer.toString();
        } 
    } if (xsSimpleType.asComplexType() != null) {
        StringBuffer stBuffer = new StringBuffer();
        parseComplexType(xsSimpleType.asComplexType(), stBuffer);
        return stBuffer.toString();
    } 
    return null;
}
但是我得到了'decimal'作为基类型名称,但它实际上是一个xs:integer。它进入了“XSFacet.FACET_MAXLENGTH”中,在方法parseSimpleType中定义了其他部分??。
如何获取整数作为complexType的基类型

发布的代码将基类型链接从xs:integer遍历到xs:decimal;只有后者是原始的。这似乎是一种错误的期望:在XML模式术语中,并非所有内置类型都是原始类型

有关更多详细信息,请参阅“方便”