I am new to java and I am stuck at one place. I am taking xml request which is coming in array.
<PassengersDetails>
<Passenger>
<passesngerName>ABC</passesngerName>
<passengerAge>25</passengerAge>
</Passenger>
<Passenger>
<passesngerName>DEF</passesngerName>
<passengerAge>28</passengerAge>
</Passenger>
<Passenger>
<passesngerName>GHI</passesngerName>
<passengerAge>48</passengerAge>
</Passenger>
<Passenger>
<passesngerName>KLM</passesngerName>
<passengerAge>18</passengerAge>
</Passenger>
</PassengersDetails>
My xml object is getting turned into array like below.
Passenger [] passenger= passengersDetails.getPassenger();
And my java object looks like
class Passenger {
passengerName1;
passengerAge1;
passengerName2;
passengerAge2;
passengerName3;
passengerAge3;
passengerName4;
passengerAge4;
}
with setter and getter.
I wanted to set all the data from array in java object. I am able to set it individually after checking if array is preset or not.
if(arr[0] != null){
setPassengerName1 = arr[0].getPassengerName;
setPassengerAge1 = arr[0].getPassengerAge;
}
if(arr[1] != null){
setPassengerName2 = arr[1].getPassengerName;
setPassengerAge2 = arr[1].getPassengerAge;
}....
How can I set passenger array into Passenger java object mentioned above.
But I wanted to know if there is any other way we can do this dynamically as we can get 0 or max 4 passenger elements in array. Something like in the same loop and setting it dynamically.
CodePudding user response:
Create a model class Passenger to hold the name and age only. Then you create an array that holds Passenger objects.
You then use:
getResources().getString(getResources().getIdentifier("propertyName", "string", getPackageName()))
to iterate through string resources, given you know how many passengers there are.
CodePudding user response:
But I wanted to know if there is any other way we can do this dynamically as we can get 0 or max 4 passenger elements in array.
Either:
- Start with one size of array, such as ten. As you place objects into the elements of the array, keep count. As you reach the limits of the array, create a new bigger array. Copy over from old array to new array. Discard old array. Repeat until done.
- Use a
Listimplementation such asArrayList.
Using a list.
List< Person > persons = new ArrayList<>() ;
Define a record class to represent each person. You can declare the record as a separate class, a nested class, or as a local class (within a method).
record Person ( String name , int age ) {}
Add each person.
Person person = new Person( "Bob" , 42 ) ;
persons.add( person ) ;
When done, you may want to make an unmodifiable list to replace the modifiable one.
persons = List.of( persons ) ;
