【问题标题】:Parsing XSD and getting nested elements解析 XSD 并获取嵌套元素
【发布时间】:2011-11-09 17:56:14
【问题描述】:

在浏览this页面后,我编写了以下代码来解析一个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>

我希望阅读所有元素,而不仅仅是基本元素,但不知道如何继续。感谢您的帮助。

【问题讨论】:

  • 用户按标签而不是标题浏览。在标题中重复主标签[java] 是不必要的,它只会使整个list of Java questions 混乱。

标签: java xsd


【解决方案1】:

我认为您尝试错误地迭代 XSNamedMap。你只得到国家元素的原因是因为它是根元素。您可能不得不下降到XSNamespaceItem 并调用getComponents 来检索另一组XSNamedMap 对象。

这将正确解析 XSD,但您仍然必须遍历树。

【讨论】:

  • 所以我应该得到 XSNamespaceItem 而不是 XSNamedMap。我懂了。谢谢。我会试试的。
  • 我能够使用 XSElementDecl 中的 XSComplexTypeDecl 中的 XSParticles 来完成它,它是地图中的一个项目。谢谢。
猜你喜欢
  • 2021-12-11
  • 2012-08-11
  • 1970-01-01
  • 2015-03-04
  • 2014-06-30
  • 1970-01-01
  • 2013-11-14
  • 2012-08-10
  • 2012-06-24
相关资源
最近更新 更多