如何获取复杂数据类型的内容模型

弹药

我需要在XSD中声明的复杂类型的contentModel,我的XSD如下:

<element name="add">
<complexType>
 <sequence>
  <element name="no1" type="xsd:int" minOccurs="0"/>
  <element name="no2" type="xsd:int" minOccurs="1" maxOccurs="5"/>
 </sequence>
</complexType>

我为此使用以下代码:

//elem is ScheamType for the rootnode , in this case it is add
    if (elem != null) {

        System.out.println("\ncontent of "+elem +"   is    "+elem.getContentType());
         if(elem.getContentType()==3||elem.getContentType()==4)

        {   
             SchemaParticle particle=elem.getContentModel();

        for( SchemaParticle p:particle.getParticleChildren())

        {

             System.out.println("\nchild:"+p.getName()+"\ttype:"+p.getType().getName().getLocalPart());

        }

        }

但是它为SchemaParticle对象提供了NullPointerException,该对象由getContentModel()返回

该代码适用于以下xsd:

<complexType name="Employee"> <sequence> <element name="empid" type="xsd:int"/> <element name="empname" nillable="true" type="xsd:string"/> </sequence> </complexType>

弹药

找到了解决方案:

//The elem is the SchemaType variable
SchemaParticle rootSchemaParticle = elem.getContentModel();
        SchemaLocalElement rootSchemaLocalElement = (SchemaLocalElement) rootSchemaParticle;
        //Get the SchemaType for the element.
        SchemaType rootSchemaType = rootSchemaLocalElement.getType();
        //Get the content Model of the root Element ie; the Children Structure for elem
        SchemaParticle childrenSchemaparticle = rootSchemaType.getContentModel();

        if (childrenSchemaparticle != null) {// Operation has non zero child element
            if (childrenSchemaparticle.countOfParticleChild() > 0) {// multiple child elements
                for (int i = 0; i < childrenSchemaparticle
                        .countOfParticleChild(); i++) {
                    paraName = childrenSchemaparticle.getParticleChild(i).getName().getLocalPart();
                    SchemaLocalElement childSchemaLocalElement = (SchemaLocalElement) childrenSchemaparticle.getParticleChild(i);
                    minOccur = childSchemaLocalElement.getMinOccurs().longValue();
                    maxOccur = childSchemaLocalElement.getMaxOccurs().longValue();
                    SchemaType childSchemaType = childSchemaLocalElement.getType();
                    dataType = childSchemaType.getName().getLocalPart();
                    System.out.println("parameter Name "+paraName + " Datatype "+dataType+" Minoccur "+minOccur+" MaxOccur "+maxOccur);                 
                }
            } else {// Single child                 
                paraName = childrenSchemaparticle.getName().getLocalPart();
                minOccur = childrenSchemaparticle.getMinOccurs().longValue();
                maxOccur = childrenSchemaparticle.getMaxOccurs().longValue();
                SchemaLocalElement childSchemaLocalElement = (SchemaLocalElement) childrenSchemaparticle;
                SchemaType childSchemaType = childSchemaLocalElement.getType();
                dataType = childSchemaType.getName().getLocalPart();
                System.out.println("parameter Name "+paraName + " Datatype "+dataType+" Minoccur "+minOccur+" MaxOccur "+maxOccur);
            }
        }

处理单个孩子和多个孩子的差异是由于粒子类型的不同,因为单个孩子的ELEMENT和多个孩子的SEQUENCE。引用以获取详细信息:http : //xmlbeans.apache.org/docs/2.0.0/reference/org/apache/xmlbeans/SchemaParticle.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建具有复杂数据类型的 LoopBack 模型

来自分类Dev

如何对复杂数据类型进行自动区分?

来自分类Dev

如何解析Pig中的复杂数据类型

来自分类Dev

复杂数据类型的Typedef

来自分类Dev

PHP Soap复杂数据类型?

来自分类Dev

ASP.Net Core,创建具有复杂数据类型属性的模型

来自分类Dev

C ++模板化链表获取复杂数据类型的数据元素

来自分类Dev

如何创建指向hbase表的复杂数据类型的外部hive表?

来自分类Dev

如何在Tensorflow的c ++ API中使用复杂数据类型?

来自分类Dev

如何在Pig中扁平化复杂数据类型?

来自分类Dev

如何在Tensorflow的c ++ API中使用复杂数据类型?

来自分类Dev

在Haskell中以通用方式扩展复杂数据类型

来自分类Dev

HyperLedger Fabric中的复杂数据类型

来自分类Dev

具有复杂数据类型的Valgrind“内存错误”

来自分类Dev

Pig中复杂数据类型的问题

来自分类Dev

使用Hive CLI配置Hive复杂数据类型

来自分类Dev

将复杂数据类型(数组)从 csv 导入 snappydata

来自分类Dev

DynamoDB 对复杂数据类型的快速搜索

来自分类Dev

如何从WebAPI中的[FromBody]属性获取复杂数据

来自分类Dev

在Hive中加载结构或任何其他复杂数据类型

来自分类Dev

何时使用std :: complex <long double>与自己的复杂数据类型(struct等。)

来自分类Dev

在Hive中加载结构或任何其他复杂数据类型

来自分类Dev

使用 LINQ 在 EF Core 中查询复杂数据类型

来自分类Dev

Tableau 是否支持配置单元列的复杂数据类型并将其展平?

来自分类Dev

使用基于数据类型的获取内容

来自分类Dev

如何检查Django模型数据类型?

来自分类Dev

Arrays.sort()-对原始和复杂数据类型进行排序的两种不同策略

来自分类Dev

AJAX / HTML如何存储复杂数据

来自分类Dev

如何打印原始/复杂数据

Related 相关文章

  1. 1

    创建具有复杂数据类型的 LoopBack 模型

  2. 2

    如何对复杂数据类型进行自动区分?

  3. 3

    如何解析Pig中的复杂数据类型

  4. 4

    复杂数据类型的Typedef

  5. 5

    PHP Soap复杂数据类型?

  6. 6

    ASP.Net Core,创建具有复杂数据类型属性的模型

  7. 7

    C ++模板化链表获取复杂数据类型的数据元素

  8. 8

    如何创建指向hbase表的复杂数据类型的外部hive表?

  9. 9

    如何在Tensorflow的c ++ API中使用复杂数据类型?

  10. 10

    如何在Pig中扁平化复杂数据类型?

  11. 11

    如何在Tensorflow的c ++ API中使用复杂数据类型?

  12. 12

    在Haskell中以通用方式扩展复杂数据类型

  13. 13

    HyperLedger Fabric中的复杂数据类型

  14. 14

    具有复杂数据类型的Valgrind“内存错误”

  15. 15

    Pig中复杂数据类型的问题

  16. 16

    使用Hive CLI配置Hive复杂数据类型

  17. 17

    将复杂数据类型(数组)从 csv 导入 snappydata

  18. 18

    DynamoDB 对复杂数据类型的快速搜索

  19. 19

    如何从WebAPI中的[FromBody]属性获取复杂数据

  20. 20

    在Hive中加载结构或任何其他复杂数据类型

  21. 21

    何时使用std :: complex <long double>与自己的复杂数据类型(struct等。)

  22. 22

    在Hive中加载结构或任何其他复杂数据类型

  23. 23

    使用 LINQ 在 EF Core 中查询复杂数据类型

  24. 24

    Tableau 是否支持配置单元列的复杂数据类型并将其展平?

  25. 25

    使用基于数据类型的获取内容

  26. 26

    如何检查Django模型数据类型?

  27. 27

    Arrays.sort()-对原始和复杂数据类型进行排序的两种不同策略

  28. 28

    AJAX / HTML如何存储复杂数据

  29. 29

    如何打印原始/复杂数据

热门标签

归档