Java/XSD解析

7

我不确定是否有这样的东西,但我还是想问一下:
是否有人知道在Java中是否有一个库可以读取xsd文件并“创建”定义的元素,例如以字符串格式在代码中使用?
例如,读取以下模式:

<?xml version="1.0" encoding="utf-8"?>
        <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
          <xs:element name="Address">
            <xs:complexType>
              <xs:sequence>
                  <xs:element name="Street" type="xs:string" />
                  <xs:element name="Town" type="xs:string" />
                  <xs:element name="Country" type="xs:string" minOccurs="0" />
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:schema>

您需要将以下字符串翻译为中文:

并且有一个字符串,格式如下:

<Address>  
  <Street></Street>
  <Town></Town>
  <Country></Country>
</Address>

自动化工具做的事情类似,即解析WSDL并从类型部分创建例如JAXB类的实例,这些实例可以是模式中定义的元素的实例。
是否有任何库可以做到这一点?

更新:
例如,在Eclipse中为Web应用程序创建xml描述符时,它会呈现树形表格,其中包含所有必填元素供用户根据模式填写。他们是如何做到的?我想象他们解析了包含在jar文件中的xsds
欢迎任何输入。
谢谢!


JAXB难道不是做类似的事情吗?还是我误解了问题? - Hovercraft Full Of Eels
@Hovercraft: 我不想创建任何类。我只想读取一个xsd文件,并创建一个包含定义元素的字符串。我猜这与创建jaxb类的方式类似。 - Cratylus
1
我不明白为什么会存在这样的东西?有什么要求吗?对于0到多个元素,会生成多少个空元素?此外,输出不捕获类型是否重要? - Synesso
@Synesso:这个想法是空元素将通过用户界面呈现给用户,然后用户将填写所需的值。 - Cratylus
2个回答

1

我不想生成类。是的,我知道这些框架。我只对从 xsd 创建元素感兴趣。 - Cratylus

1

这个能在运行时使用吗?我不感兴趣只是从 xsd 生成示例的工具。我有兴趣在运行时使用它,适用于用户提供的任何 xsd。 - Cratylus
可以的。您可以执行提供的命令行脚本,或者按照脚本作为指南设置正确的类路径引用等(oXygen是一个基于Java的工具)。然后在运行时,将其提供一个XSD的URI以生成文件。 - Mads Hansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接