如何在Simple框架中始终显示前缀命名空间?

时间:2014-06-10 15:36:02

标签: java android xml xml-namespaces simple-framework

XML前缀

的问题

我希望始终在XML的每个孩子上显示前缀。 为此,我使用相应的@Namespace(reference = "uri", prefix = "pre")注释每个类,并使用@Namespace(reference = "uri")注释属性。

因此,对于我的一些带注释的类,我得到了预期的结果:

<?xml version="1.0" encoding= "UTF-8" standalone="yes"?>
<pre:myClass1 xmlns:pre="uri" xmlns:xmime="http://www.w3.org/2005/05/xmlmime">
  <pre:attr1>value1</pre:attr1>
  <pre:attr2>value2</pre:attr2>
<pre:myClass1>

但是其他一些人,我得到了这个(没有前缀的结果):

<?xml version="1.0" encoding= "UTF-8" standalone="yes"?>
<myClass2 xmlns="uri" xmlns:xmime="http://www.w3.org/2005/05/xmlmime">
  <attr1>value1</attr1>
  <attr2>value2</attr2>
<myClass2>

如您所见,它为第二个命名空间提供了前缀xmime,只是将命名空间uri放到当前节点,而不是在任何地方放置前缀。我知道不应该更改XML文件的含义,但我必须遵循的规范指定前缀应该出现在任何地方。


带注释的Java

我的课程如下:

@NamespaceList(value = {
        @Namespace(reference = "http://www.w3.org/2005/05/xmlmime", prefix = "xmime"),
        @Namespace(reference = "uri", prefix = "pre") })
public abstract class Ancestor {
  ...
}

MyClass1MyClass2都以同样的方式扩展Ancestor

@Namespace(reference = "uri", prefix = "pre")
public class MyClass1 extends Ancestor { // Or MyClass2
    @Element(required = false)
    @Namespace(reference = "uri")
    protected String attr1;
    @Element(required = false)
    @Namespace(reference = "uri")
    protected String attr2;
}

为什么以及如何?

为什么XML输出存在这样的差异,以及如何获取前缀版本?

它甚至可能是一个错误吗?

0 个答案:

没有答案