我如何 POST 没有根项目的元素列表作为 xml 在 Retrofit

How can I POST a list of Elements without Root item as xml in Retrofit

我正在尝试 POST 使用 Retrofit 将实体连接到 REST 端点。我无法控制端点代码。

实体由另一个实体的对象列表组成。

public class DemoEntity {
  @ElementList(inline = true);
  private List<SubEntry> entries;
}

@Root(name = "subEntry")
public class SubEntry {
  @Attribute(name = "attr")
  private String attribute;
}

我希望结果 xml 看起来像这样

<?xml version="1.0"...>
<subEntry attr="a" />
<subEntry attr="b" />
<subEntry attr="c" />

但序列化程序始终包含 DemoEntity 的根元素。

<?xml version="1.0"... ?>
<DemoEntity>
  <subEntry attr="a" />
  <subEntry attr="b" />
  <subEntry attr="c" />
</DemoEntity>

有什么方法可以规避 "ignore" 根元素的默认(和正确)行为?

序列化程序似乎遵循 XML 的官方规范。您可以查看以下 SO answer。所以基本上,对于格式良好的 XML 并符合标准,您需要一个根元素。

我可以建议的是,如果你真的需要跳过标准,你可以:

  1. 建立一些处理器来读取这个注释产生你想要的输出。
  2. 将您的文档手动编写为字符串,并post将其作为请求的正文。

如果您正在访问的端点确实使用了不合规的 xml,我会首先建议,然后再使用更难的解决方案。