Java @Android SimpleXml中的名称空间
我有一个XML文件:Java @Android SimpleXml中的名称空间,java,android,xml,simple-framework,Java,Android,Xml,Simple Framework,我有一个XML文件: <Name xml:lang="en">English</Name> <Name xml:lang="it">Italian</Name> 为什么当我做toString时,它不会只打印英文名称 Tnks你班上有些地方不对劲: 类必须使用@Root,而不是@Element 您的@命名空间是为类而不是属性设置的 因为2。你没有得到属性 名称空间的引用是否正确 xml是一个列表,而不是单个类 如果将类序列化为xml,将得到如下
<Name xml:lang="en">English</Name> <Name xml:lang="it">Italian</Name>
为什么当我做toString时,它不会只打印英文名称
Tnks你班上有些地方不对劲:
@Root
,而不是@Element
@命名空间
是为类而不是属性设置的<lang:name xmlns:lang="en">Example</lang:name>
这将序列化为:
<name xml:lang="en" xmlns:xml="">English</name>
对于测试,您也可以将其序列化:
<Names>
<Name xml:lang="en" xmlns:xml="">English</Name>
<Name xml:lang="it" xmlns:xml="">Italian</Name>
</Names>
现在是最后的测试:
final String xml = "<Names>"
+ "<Name xml:lang=\"en\">English</Name>"
+ "<Name xml:lang=\"it\">Italian</Name>"
+ "</Names>";
Serializer ser = new Persister();
NameList names = ser.read(NameList.class, xml);
System.out.println(names);
这不是我要找的100%,但我想你也可以帮我。我有两个同名的元素“link”,但有另一个名称空间
bla
和bla
当我用@名称空间(prefix=“ns1”)
和“ns2”
创建两个元素时,我得到了错误:元素“link”已与..@RoDo一起使用。您可以实现一个转换来执行此操作,我想这应该行得通。很抱歉,我遇到了错误:名称的重复注释我写的错误是当我只实例化1@Element(name=“link”)“
field@RoDo我已经给出了我的答案——评论空间不够。
@Root(name = "Names")
public class NameList
{
@ElementList(name = "Names", inline = true)
private List<Name> names;
}
<Names>
<Name xml:lang="en" xmlns:xml="">English</Name>
<Name xml:lang="it" xmlns:xml="">Italian</Name>
</Names>
<Names>
<Name xml:lang=\"en\">English</Name>
<Name xml:lang=\"it\">Italian</Name>
</Names>
final String xml = "<Names>"
+ "<Name xml:lang=\"en\">English</Name>"
+ "<Name xml:lang=\"it\">Italian</Name>"
+ "</Names>";
Serializer ser = new Persister();
NameList names = ser.read(NameList.class, xml);
System.out.println(names);
NameList{names=[Name{text=English, attr=en}, Name{text=Italian, attr=it}]}