在 GWT 2.7 服务器端从 xsd 创建 xml
Create xml from xsd in GWT 2.7 server side
我想在基于 GWT 的服务器上从 XSD 文件创建 XML 文档。不幸的是我不能使用 javax.xml.bind 包,编译器给我以下错误:
No source code is available for type javax.xml.bind.Marshaller; did you forget to inherit a required module?
我尝试了替代库,但它们使用上述包中的 Marshaller 或 JAXBContext Parse XML file in GWT server-side. GWT's XML Parser doesn't work on the server side. Overriding the package 实现也不起作用。此外,我想使用架构验证 XML 文件。
编辑解决方案:
我在最初的问题中提到了给定的解决方案和链接。我无法让 JAXB 的东西在客户端工作,因为依赖项太多,而且我不喜欢在新包中添加所有源文件。不过我可以在共享代码中使用 xml 注释。由于解释的数量、他们令人困惑的风格(我的意见)和当年,我将解释我的方法。它与其他解决方案相同,可能更容易理解,并且完全基于公认解决方案中的 Tassos Bassoukos:
- 找到您需要的source file in your JDK。您的安装文件夹中有一个 source.zip 文件夹。
- 根据 Overriding one package implementation with another 在您的项目中创建一个包。这个新的包路径对应于您想要的 Java 文件的路径。在 gwt.xml !
中添加 <super-source path="jre" />
注释
- 将 (1.) 中的文件复制到新包中并更改它们的导入声明(所有 类 引用所需的 类 导入真实的 java 包路径,而不是您的自定义一个)。
您必须将 XML 代码保留在客户端或共享文件夹之外。您可以在服务器上使用所有 类 和技术。
如果需要为共享类添加注解,需要在超级源路径中添加xml注解。
这里已经解释过了
How to use JAXB annotations in the client side for GWT?
如果这不是您的问题,您可能想要展示一些您尝试过但失败的代码。
我想在基于 GWT 的服务器上从 XSD 文件创建 XML 文档。不幸的是我不能使用 javax.xml.bind 包,编译器给我以下错误:
No source code is available for type javax.xml.bind.Marshaller; did you forget to inherit a required module?
我尝试了替代库,但它们使用上述包中的 Marshaller 或 JAXBContext Parse XML file in GWT server-side. GWT's XML Parser doesn't work on the server side. Overriding the package 实现也不起作用。此外,我想使用架构验证 XML 文件。
编辑解决方案:
我在最初的问题中提到了给定的解决方案和链接。我无法让 JAXB 的东西在客户端工作,因为依赖项太多,而且我不喜欢在新包中添加所有源文件。不过我可以在共享代码中使用 xml 注释。由于解释的数量、他们令人困惑的风格(我的意见)和当年,我将解释我的方法。它与其他解决方案相同,可能更容易理解,并且完全基于公认解决方案中的 Tassos Bassoukos:
- 找到您需要的source file in your JDK。您的安装文件夹中有一个 source.zip 文件夹。
- 根据 Overriding one package implementation with another 在您的项目中创建一个包。这个新的包路径对应于您想要的 Java 文件的路径。在 gwt.xml ! 中添加
- 将 (1.) 中的文件复制到新包中并更改它们的导入声明(所有 类 引用所需的 类 导入真实的 java 包路径,而不是您的自定义一个)。
<super-source path="jre" />
注释
您必须将 XML 代码保留在客户端或共享文件夹之外。您可以在服务器上使用所有 类 和技术。
如果需要为共享类添加注解,需要在超级源路径中添加xml注解。
这里已经解释过了 How to use JAXB annotations in the client side for GWT?
如果这不是您的问题,您可能想要展示一些您尝试过但失败的代码。