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

标签 java xml xml-parsing jaxb xml-serialization

所以当我尝试使用 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/

相关文章:

java - 闰年程序问题——似乎无法让它正常运行

c# - 将 XmlElement 转换为元素为 ("ElementName"的 XElement )不返回任何结果

android - 无法正确获取 xml 中的数据解析

java - 如何修复 'android.os.NetworkOnMainThreadException' ?

java - 计算多线程环境中类的实例数?

python-3.x - python格式化问题解析子元素

用c程序将xml文件转换为wbxml

快速解析给定 elementName 的属性名称

java - 从互联网获取文本

XML 命名空间、模式验证 (XSD) 和 XSLT