所以当我尝试使用 jaxb 从 java 类构建 xml 时遇到以下问题。 我的第一个标签需要像这样:
<Entity Type=‘test-instance’>
Some xml
</Entity>
我需要第一个标签中写入一些内容,但最后一个标签只需要包含实体。
我创建了一个 claas 并添加了带有 name=Entity 的 @XMLRootElement 标签,并使用它我得到了正确的最后一个标签。如果我使用第一个标签和结束标签中的整个表达式,这对我没有帮助。
我使用 @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’=“”>
所以我无法删除来 self 的字符串的引号。
我正在考虑对第一个实体标记进行硬编码,并在最后一个实体标记上以不同的方式关闭它,但找不到任何东西。
或者即使字符串未初始化也可以设置 XMLAttribute 的其他选项。我在 XMLElement 上看到一些类似“必需”的内容,但它不适用于 XMLAttribute,而且我不确定它是否满足我的需要它到。
如有任何帮助,我们将不胜感激。
谢谢
最佳答案
在 XML 应用程序中,原则应该是:
(a) 接收应用程序不应该关心 XML 的编写方式的无关紧要的词汇细节。 (实现此目的的最佳方法是使用受人尊敬的 XML 解析器来读取 XML。)
(b) 编写应用程序应该可以自由地使用他们认为方便的任何词汇约定。 (这意味着您可以使用任何受人尊敬的序列化库来编写 XML。)
属性的单引号或双引号的选择是这些无关紧要的词汇细节之一。
我们在 StackOverflow 上看到很多问题都是由于人们不遵守这些规则而造成的。
您还没有解释为什么需要生成单引号。也许 XML 正在被不遵循规则 (a) 的应用程序使用。在这种情况下你应该修复它!如果您无法解决这个问题,那么您的成本就会大大增加,事实上,使用 XML 根本没有任何意义。
有时,当我们问这个问题时,我们得到的答案是“因为客户坚持这样”。作为专业人士,我们的工作就是教育我们的客户:他们正在支付账单,将钱花在糟糕的工程上是不负责任的,即使这是他们所说的他们想要的。
关于java - 如何在没有java双引号的情况下发送Jaxb XmlAttribute数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50298659/