我有一个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
答案 0 :(得分:0)
XPath 2.0表达式distinct-values(//xs:element/@name)
将为您提供架构文档中的不同元素名称。您需要确保使用命名空间绑定xs = http://www.w3.org/2001/XMLSchema来设置XPath处理器。
总的来说,结果毫无意义。它排除了包含和导入的模式文档中的元素名称,并且可能存在多个具有相同名称和不同定义的本地元素声明。但这就是你想要的,如果它没用,那就是你的问题不是我的。