如何在没有 java 双引号的情况下发送 Jaxb XmlAttribute 数据

How to send Jaxb XmlAttribute data without java double quotes

所以我在尝试使用 jaxb 从 java class 构建 xml 时遇到以下问题。 我的第一个标签需要像这样:

<Entity Type=‘test-instance’>
Some xml
</Entity>

我需要第一个标签来写一些东西,但最后一个标签只需要实体。

我创建了一个 claas 并添加了带有 name=Entity 的 @XMLRootElement 标签,使用它我得到了正确的最后一个标签。如果我在第一个和结束标记中使用整个表达式,这对我没有帮助。

我用@XMLAttribute 添加了一个字符串变量,这样我就可以在实体之后添加其他内容。问题是如果我用值初始化变量,我将得到字符串双引号。例如

@XMLAttribute(name=“Type”)
String x = “test-instance”;

当我构建它时,它会显示:

<Entity Type=“test-instance”>

,带双引号,我只需要单引号。

如果在 xml 属性中使用我需要的完整描述,例如:

@XMLAttribute(name=“Type=‘test-instance’”)
String x;

这可以正常工作,但如果变量未初始化,则不会添加任何内容,如果写类似 String x=“”; 然后我会得到:

<Entity Type=‘test-instance’=“”>

所以我无法删除来自我的字符串的引号。

我正在考虑对第一个 Entity 标签进行硬编码,并让最后一个关闭它的地方有所不同,但找不到任何东西。

或者设置 XMLAttribute 的其他选项,即使字符串不是 initialized.I 在 XMLElement 上看到一些类似“必需”的东西,但它不适用于 XMLAttribute,我不太确定做我需要的。

如有任何帮助,我们将不胜感激。

谢谢

在XML应用中原则应该是:

(a) 接收申请不应该关心 XML 的书写方式等无关紧要的词汇细节。 (实现此目的的最佳方法是使用可敬的 XML 解析器来读取 XML。)

(b) 编写应用程序应该可以自由使用他们认为方便的任何词汇约定。 (这意味着您可以使用任何受人尊敬的序列化库来编写 XML。)

为属性选择单引号或双引号是这些无关紧要的词汇细节之一。

我们在 Whosebug 上看到很多问题都是由于人们不遵守这些规则造成的。

您还没有解释为什么需要生成单引号。也许 XML 正在被不遵循规则 (a) 的应用程序使用。在这种情况下,您应该修复它!如果您无法修复它,那么您将大大增加成本,事实上,使用 XML 根本没有什么意义。

有时当我们问这个问题时,我们会得到答案 "because by client insists on it being that way"。作为专业人士,我们的工作是教育我们的客户:他们正在支付账单,将他们的钱花在糟糕的工程上是不负责任的,即使那是他们所说的他们想要的。