@Namespace on Android SimpleXml
I have this XML file:
<Name xml:lang="en">English</Name> <Name xml:lang="it">Italian</Name>
And my class:
@Element
@Namespace(reference = "en", prefix = "lang")
public class Name {
@Text
private String title;
@Override
public String toString() {
return title.toUpperCase() + "\n";
}
Why, when I do toString, it does not print only the name in English?
Tnks
There are some things in your class:
- You should use
@Rootfor classes, not@Element - Your is
@Namespaceset for the class, not the attribute - Due to 2. you do not get the attribute
- Is your namespace referenced correctly?
- Your xml is a list, not a single class
If you serialize your class in xml, you will get something like this:
<lang:name xmlns:lang="en">Example</lang:name>
-> Does not match your input.
Here's the adjusted version:
@Root(name = "Name")
public class Name
{
@Text()
private String text;
@Attribute(name = "lang")
@Namespace(prefix = "xml", reference = "") // Add your reference here!
private String attr;
@Override
public String toString()
{
return text.toUpperCase() + "\n";
}
}
It is serialized for:
<name xml:lang="en" xmlns:xml="">English</name>
, , .
Name . xml . , :
@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>
.
; : xmlns:xml - - . xml. , 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);
Names. toString(), :
NameList{names=[Name{text=English, attr=en}, Name{text=Italian, attr=it}]}