JAXB Object when printing on console not showing value



I am doing marshalling and unmarshalling of XML.


XML i want to unmarshall and then marshall is xml:



<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<resources>
<string name="app_name">Google<string>
<string name="app_name">Facebook<string>
<string-array name="ranking">
<item>one</item>
<item>two</item>
</string-array>
<string-array name="non-ranking">
<item>one</item>
<item>two</item>
</string-array>
</resources>


but xml is showing like this after marshalling :



<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<resources>
<string name="app_name"/> ---- Value not showing
<string name="app_name"/> ---- Value not showing
<string-array name="ranking">
<item>one</item>
<item>two</item>
</string-array>
<string-array name="non-ranking">
<item>one</item>
<item>two</item>
</string-array>
</resources>


Here are the jaxb objects I have created :



1.ResourcesTag.java

2.StringArrayTag.java

3.StringTag.java


ResourcesTag.java :



package JX;

import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "resources")
@XmlAccessorType(XmlAccessType.FIELD)
public class ResourcesTag {

private List<StringTag> string = null;

private List<StringArrayTag> stringarray = null;

@XmlElement(name = "string")
public List<StringTag> getString() {
return string;
}

public void setString(List<StringTag> string) {
this.string = string;
}

@XmlElement(name = "string-array")
public List<StringArrayTag> getStringarray() {
return stringarray;
}

public void setStringarray(List<StringArrayTag> stringarray) {
this.stringarray = stringarray;
}

}


StringArrayTag.java



package JX;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "string-array")
@XmlAccessorType(XmlAccessType.FIELD)
public class StringArrayTag {
@XmlAttribute(name = "name")
private String id2;
@XmlElement(name = "item")
private List<String> item = null;

public String getId2() {
return id2;
}

public void setId2(String id2) {
this.id2 = id2;
}

public List<String> getItem() {
return item;
}

public void setItem(List<String> item) {
this.item = item;
}

}


StringTag.java :



package JX;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "string-array")
@XmlAccessorType(XmlAccessType.FIELD)
public class StringArrayTag {
@XmlAttribute(name = "name")
private String id2;
@XmlElement(name = "item")
private List<String> item = null;

public String getId2() {
return id2;
}

public void setId2(String id2) {
this.id2 = id2;
}

public List<String> getItem() {
return item;
}

public void setItem(List<String> item) {
this.item = item;
}

}


I believe my code for marshaling and marshaling is correct. so i am not posting that here.


Kindly please suggest me correct way of writing JAXB object so that this error can be eliminated.


No comments:

Post a Comment