Java @Android SimpleXml中的名称空间

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,将得到如下

我有一个XML文件:

<Name  xml:lang="en">English</Name> <Name  xml:lang="it">Italian</Name>
为什么当我做toString时,它不会只打印英文名称


Tnks

你班上有些地方不对劲:

  • 类必须使用
    @Root
    ,而不是
    @Element
  • 您的
    @命名空间
    是为类而不是属性设置的
  • 因为2。你没有得到属性
  • 名称空间的引用是否正确
  • xml是一个列表,而不是单个类
  • 如果将类序列化为xml,将得到如下结果:

    <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}]}