我有一组用于不同数据类型的xsd文件.在Java世界中,生成类型属性列表的最佳方法是什么?
例如,这两个文件.
file:customer.xsd
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="number" type="xs:integer"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
file:order.xsd
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="orderid" type="xs:integer"/>
<xs:element name="customer" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
我想做两件事
1.一个Java应用程序,它读入XSD并进行处理(不知何故?).因此,当您运行该程序时,它可以打印出属性
> java -jar printtypes.jar -f customer.xsd
> number : Integer
> name : String
> address : String
Run Code Online (Sandbox Code Playgroud)
2.某种生成新文件的转换
file:customer.properties
<propertylist>
<prop>
<name> orderid </name>
<type> integer </type>
</prop>
<prop>
<name> customer </name>
<type> string</type>
</prop>
</propertylist>
Run Code Online (Sandbox Code Playgroud)
我尝试使用java反射来实现上面(1)中的程序,以查询由JAXB生成的Java类.这创建了一个类的实例并询问了值和字段,但是在值由空序列组成的情况下它不起作用.由于类型擦除,无法返回到原始类型的值.你最终得到了一个空的ArrayList,但你不知道是什么.
我来自C++的工作,所以我现在有点迷失所有这些Java技术.我的Google权力让我失望 - 我见过的大多数JAVA/XSD帖子都谈到了验证,这不是我想要做的.
您可能想研究一下 XSOM,它是一个项目,它将吸收您的 XML 模式并生成您可以遍历并产生所需结果的对象。
http://xsom.java.net/userguide.html
手动解析模式可能非常棘手,因为可能有不同的方式来表达基本相同的事情。
| 归档时间: |
|
| 查看次数: |
994 次 |
| 最近记录: |