当前位置: 首页 > 面试题库 >

如何使用JAXB实例化一个空元素

宗政卓
2023-03-14
问题内容

我使用JAXB创建XML消息。我需要创建的XML是(为简单起见):

<request>
  <header/>
</request>

我的代码如下所示:

import javax.xml.bind.annotation.*;

@XmlRootElement(name = "request")
public class Request {

    private String header;

    @XmlElement(required=true)
    public String getHeader() {
      return header;
    }

    public void setHeader(String header) {
      this.header=header;
    }
}

问题:该header元素未显示(标题为null)。将header设置为空字符串时,将显示以下内容:

<request>
  <header></header>
</request>

当我使用type Object代替时String,结果甚至更糟:

<request>
  <header xsi:type="xs:string" 
   xmlns:xs="http://www.w3.org/2001/XMLSchema" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></header>
</request>

顺便说一句:我正在使用此代码来创建XML字符串。

是否可以获取空标签?


问题答案:

在XML中,<header/>并且<header></header>是同一个东西。如果您真的想要前者,请使用修饰词。javax.xml.transform.TransformerFactory.newTransformer()可能会为您做到这一点。



 类似资料:
  • 我在使用JAXB解析XML时遇到了这个问题。下面是所讨论的XML的简化布局: 我遇到的问题是,这些引用是在linkage标记下发送的,而linkage标记不是唯一的,而且也没有类似于根的“linkage”,这样我就可以轻松地用Java将其包装到列表中,因为generalInformation标记中有其他标记。以下是我到目前为止的设置方式: 所以我的问题是,如何配置GeneralInformatio

  • 问题内容: 我的代码中需要一个单例。我用Java实现了它,并且效果很好。我这样做的原因是为了确保在多种环境中只有一个此类的实例。 但是现在我想用单元测试在本地测试我的Singleton对象。因此,我需要模拟此Singleton的另一个实例(该对象可能来自另一个设备)。那么是否有可能第二次实例化Singleton以进行测试,还是我必须对其进行模拟? 我不确定,但是我认为可以通过使用其他类加载器来实现

  • 我想让JAXB列表到xml,其中命名空间只出现在根元素中,而不是在任何其他元素中: 我已经尝试了package level @XmlSchema,但是我一定是做错了什么,因为没有显示任何东西。 这是我的根元素类: 我还有以下包-info.java:

  • 问题内容: 我正在研究的项目使用JAXB参考实现,即类来自软件包。 我有一堂课: 我想使用JAXB编组器来获取对象的JSON表示形式: 封送处理的数据为XML格式,而不是JSON格式。如何指示 JAXB参考实现 输出JSON? 问题答案: JAXB参考实现不支持JSON,您需要添加一个包,例如Jackson或Moxy 莫西 杰克逊 在这里查看示例

  • 问题内容: 我正在为这样的简单类实现方法(以便能够使用和Java平台提供的其他功能): 我希望这些对象的 自然排序 是:1)按名称排序,以及2)如果名称相同,则按值排序;两种比较均应不区分大小写。对于这两个字段,空值都是完全可以接受的,因此在这些情况下不得中断。 我想到的解决方案是遵循以下思路的(我在这里使用的是“保护条款”,而其他人可能更喜欢单个返回点,但那一点并不重要): 这可以完成工作,但是

  • 问题内容: 我正在使用JAXB生成XML。但是JAXB会生成一个空的Tag来自我关闭。但是我的客户想要单独的空标签。我知道两者都是平等的,但他不同意我的看法。请任何人提出解决方案。谢谢。 样例代码: 实际输出: 预期产量: 编组代码: 我正在使用JDK 6.0 问题答案: 如果您已经从XSD生成了类,那么您还将生成ObjectFactory类。如果没有,请参考这里有关如何生成ObjectFacto