小编典典

如何在不使用Java双引号的情况下发送Jaxb XmlAttribute数据

java

因此,当尝试使用jaxb从Java类构建xml时,出现以下问题。我的第一个标签必须是这样的:

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

我需要第一个标记中写入一些内容,但最后一个标记仅需要具有实体。

我创建了一个claas,并使用name =
Entity添加了@XMLRootElement标记,并使用此标记具有正确的最后一个标记。如果我使用整个表达式,那么我在first和close标记中都没有帮助。

我使用@XMLAttribute添加了String变量,因此可以在Entity之后添加其他内容。问题是,如果我使用值初始化变量,则会得到字符串双引号。例如

@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的选项,即使未初始化String也是如此。我在XMLElement上看到了类似“
required”的内容,但是XMLAttribute不可用,而且我不确定它是否满足我的要求。

任何帮助将不胜感激。

谢谢


阅读 319

收藏
2020-12-03

共1个答案

小编典典

在XML应用程序中,原理应为:

(a)接收应用程序不应该在乎XML编写方式的无关紧要的词汇细节。(实现此目标的最佳方法是使用受人尊敬的XML解析器读取XML。)

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

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

我们看到由于人们不遵守这些规则而在StackOverflow上出现了很多问题。

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

有时,当我们问这个问题时,我们会得到答案“因为客户坚持认为是那样”。作为专业人士来培训客户是我们的工作:他们付账单,并且即使是他们想要的那样,将钱花在糟糕的工程上也是不负责任的。

2020-12-03