有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javajaxws和enuciate如何更改enuciate的默认XSD命名约定

我正在使用Enounceate为我正在开发的Wicket web应用程序生成一个SOAP端点,我有几个问题还没有找到解决方案

1如何更改xsd文件的名称?我浏览了FAQ,它告诉我做类似的事情:

<xml>
    <schema namespace="http://api.example.com/data" file="data.xsd"/>
</xml>

然而,我还没有完全弄清楚如何为我的数据对象设置targetNamespace。我已经通过@WebService(targetNamespace=“blah”)为我的服务完成了这项工作,但是我如何注释我的数据对象,让它们明确它们应该属于哪个名称空间呢

2 Enreactate可以很好地生成XSD,但我并不特别喜欢它使用的元素名。我有一个ServiceRequest和ServiceResponse对象。ServiceRequest对象有一个用户对象列表。ServiceResponse有一个组对象列表。Enounciate建议ServiceRequest中的每个“用户”对象都应该使用标记“<;users>;”。我觉得使用单数形式“<;user>;”更有意义因为标签实际上只包含一个用户。有可能改变这种行为吗?如果有,如何改变

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    所以,需要明确的是,除了关于命名模式文件的问题之外,你的问题实际上更多的是关于JAXB,而不是关于阐明。JAXB是一个规范,它定义了Java对象如何与XML进行(反)序列化,并阐明如何符合该规范

    无论如何,将名称空间应用于Java对象的最简单方法是使用包信息。java类包中的java文件。用@XmlSchema注释包,并将名称空间设置为所需的值

    可以使用@XmlElement注释自定义访问器与XML之间的序列化方式,例如:

    public class MyClass {
      ...
      @XmlElement (name="user")
      List<User> users;
      ...
    }
    

    以下是JAXB Java文档

    https://jaxb.dev.java.net/nonav/2.1.9/docs/api/

    或者在谷歌上搜索一个好的JAXB教程