带有 XStream 的自闭合标签?
有没有办法让XStream生成自关闭元素?
例如
<foo/>
代替
<foo></foo>
Is there a way to get XStream to generate self closing elements?
E.g.
<foo/>
instead of
<foo></foo>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
似乎没有明确的方法可以做到这一点,因为它对下游 XML 处理器来说并不重要。
您可以查看一下
PrettyPrintWriter
类的源代码,它可能正在使用它。There doesn't seem to be an explicit way to do this, since it's not supposed to matter to downstream XML processors.
You might take a look at the source for the
PrettyPrintWriter
class, which is probably what it's using.我使用一些解决方法解决了这个问题。
特别是,XStream 仅针对非原始对象打印自闭合标签;所以我用一个名为“Element”的通用类替换了所有 String 对象,该类只有一个属性“value”。
通过这种方式,Element 的空值将作为自闭合标签在 XML 中打印(如我所愿)。
在我编写了一个自定义转换器以避免在 XML 中打印非空对象的标签之后。
它成功了!
我希望它对其他人有用。
多姆
I solved the problem using a little Workaround.
In particular XStream prints selfclosing tags only for non-primitive object; so I replaced all String objects with a Generic class called "Element" with only one attribute, "value".
In this way null values of Element will be printed in XML as selfclosing tags (as I wish)
After I wrote a custom converter to avoid printing in XML the tag for not empty objects.
And it worked!
I hope it will be useful to someone else.
Dom
您可以使用转换器,然后使用以下方法设置值: writer.setValue("");
像这样:
这样写:
而不是:
you can use a converter and then set value with: writer.setValue("");
like this:
this write:
instead of: