从XSD中提取元素名称值并导入到excel中

时间:2013-07-08 06:10:49

标签: java xml jaxb xsd bufferedreader

我有一个XSD。我想提取“element name =”的值,并将它们写入excel表。我该怎么做?

我认为的是bufferedreader / XPATH / jaxb / Apache POI。但我之前没有使用过这些。请帮忙!

示例输入:

<?xml version="1.0" ?> 
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gw="XX" xmlns="XXXX" targetNamespace="XXXXX" elementFormDefault="qualified" xmlns:ns0="XXXXXX" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1">
    <xsd:annotation>
        <xsd:appinfo>
            <jaxb:schemaBindings>
                <jaxb:package name="XXXXXXXX" /> 
            </jaxb:schemaBindings>
        </xsd:appinfo>
    </xsd:annotation>

<xsd:import namespace="XXXXXXXX" /> 
<xsd:element name="sample" type="sample" nillable="true" /> 
<xsd:complexType name="sample">
    <xsd:sequence>
        <xsd:element name="tempTerms" minOccurs="0" nillable="true">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="Input" minOccurs="0" maxOccurs="unbounded" nillable="true" type="ns0:tempTerm" /> 
                </xsd:sequence>
            </xsd:complexType>
    </xsd:element>
  <xsd:element name="PatternCode" minOccurs="0" nillable="true" type="xsd:string" gw:type="java.lang.String" /> 
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

示例输出:

列名称为的XLS:

sample
tempTerms
Input
PatternCode

1 个答案:

答案 0 :(得分:0)

XPath 2.0表达式distinct-values(//xs:element/@name)将为您提供架构文档中的不同元素名称。您需要确保使用命名空间绑定xs = http://www.w3.org/2001/XMLSchema来设置XPath处理器。

总的来说,结果毫无意义。它排除了包含和导入的模式文档中的元素名称,并且可能存在多个具有相同名称和不同定义的本地元素声明。但这就是你想要的,如果它没用,那就是你的问题不是我的。