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 {
...
}
MyClass1
和MyClass2
都以同样的方式扩展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输出存在这样的差异,以及如何获取前缀版本?
它甚至可能是一个错误吗?