Q:

Unity serializer.Deserialize(stream) Giving a ArgumentNullException

Can anyone tell me what I'm doing wrong? When I'm playing the game in the editor everything is working. When I built the game and tried it there saving the game works, but when loading the game data I get this error: ArgumentNullException: Value cannot be null. I've been looking for a solution, but can't seem to find any.
public void SaveGame()
{
    checkGameData();

    XmlSerializer serializer = new XmlSerializer(typeof(PoliceSave));
    FileStream stream = new FileStream(Application.persistentDataPath + "/gameData.xml", FileMode.Create);
    serializer.Serialize(stream, policeSave);
    stream.Close();

    policeSave.GameData.Clear();
    policeSave.Characters.Clear();
    policeSave.Vehicles.Clear();
    vehicleDetails.passenger.characters.Clear();

    Debug.Log("[Server] Your game has been saved.");
}

public void LoadGame()
{
    clearGameObjects();
    XmlSerializer serializer = new XmlSerializer(typeof(PoliceSave));
    FileStream stream = new FileStream(Application.persistentDataPath + "/gameData.xml", FileMode.Open);
    //try
    //{
        policeSave = serializer.Deserialize(stream) as PoliceSave;
    //}catch
    //{
        Debug.Log("[Server] Error while loading game data!");
    //}
    stream.Close();

    loadGameObjects();

    policeSave.GameData.Clear();
    policeSave.Characters.Clear();
    policeSave.Vehicles.Clear();
    vehicleDetails.passenger.characters.Clear();

    Debug.Log("[Server] Your game has been loaded.");
}

[System.Serializable]
public class GameData
{
    [XmlAttribute("Funds")]
    public int funds;
    [XmlAttribute("MissionID")]
    public int missionId;
}

[System.Serializable]
public class Passenger
{
    [XmlAttribute("Name")]
    public List<string> characters;
}

[System.Serializable]
public class Vec2Position
{
    [XmlAttribute("x")]
    public float x;
    [XmlAttribute("y")]
    public float y;
}

[System.Serializable]
public class Rotation
{
    [XmlAttribute("z")]
    public float z;
}

[System.Serializable]
public class CharacterDetails
{
    [XmlAttribute("Name")]
    public string characterName;
    [XmlAttribute("IsCameraSubject")]
    public bool isCameraSubject;

    public Vec2Position Position;
    public Rotation Rotation;
}

[System.Serializable]
public class VehicleDetails
{
    [XmlAttribute("Name")]
    public string vehicleName;
    [XmlAttribute("IsCameraSubject")]
    public bool isCameraSubject;

    public Vec2Position Position;
    public Rotation Rotation;
    public Passenger passenger;
}

[System.Serializable]
public class PoliceSave
{
    public List<GameData> GameData;
    public List<CharacterDetails> Characters = new List<CharacterDetails>();
    public List<VehicleDetails> Vehicles = new List<VehicleDetails>();
}

Xml File:
<?xml version="1.0" encoding="utf-8"?>
<PoliceSave xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <GameData>
    <GameData Funds="900" MissionID="13" />
  </GameData>
  <Characters>
    <CharacterDetails Name="PoliceOfficer_01" IsCameraSubject="true">
      <Position x="0.4215863" y="-2.17915773" />
      <Rotation z="349.367126" />
    </CharacterDetails>
  </Characters>
  <Vehicles>
    <VehicleDetails Name="PoliceCar_01" IsCameraSubject="false">
      <Position x="1.17827833" y="-2.75721359" />
      <Rotation z="33.9092827" />
      <passenger Name="" />
    </VehicleDetails>
  </Vehicles>
</PoliceSave>

Error: Link to the crash report
    Uploading Crash Report
ArgumentNullException: Value cannot be null.
Parameter name: elementType
  at System.Array.CreateInstance (System.Type elementType, System.Int32[] lengths) [0x00009] in <c6bd535f6ab848b4a13f34d01b756eef>:0 
  at System.Array.CreateInstance (System.Type elementType, System.Int32 length) [0x0000b] in <c6bd535f6ab848b4a13f34d01b756eef>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadListString (System.Xml.Serialization.XmlTypeMapping typeMap, System.String values) [0x00033] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.GetValueFromXmlString (System.String value, System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlTypeMapping typeMap) [0x00009] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadAttributeMembers (System.Xml.Serialization.ClassMap map, System.Object ob, System.Boolean isValueList) [0x0004b] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map, System.Object ob, System.Boolean isValueList, System.Boolean readBySoapOrder) [0x00000] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob) [0x00007] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, System.Boolean isNullable, System.Boolean checkType) [0x000c4] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject (System.Xml.Serialization.XmlTypeMapping typeMap, System.Boolean isNullable, System.Boolean checkType) [0x0002e] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x00066] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map, System.Object ob, System.Boolean isValueList, System.Boolean readBySoapOrder) [0x007dc] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob) [0x00007] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, System.Boolean isNullable, System.Boolean checkType) [0x000c4] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject (System.Xml.Serialization.XmlTypeMapping typeMap, System.Boolean isNullable, System.Boolean checkType) [0x0002e] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x00066] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadListElement (System.Xml.Serialization.XmlTypeMapping typeMap, System.Boolean isNullable, System.Object list, System.Boolean canCreateInstance) [0x000de] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map, System.Object ob, System.Boolean isValueList, System.Boolean readBySoapOrder) [0x00558] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob) [0x00007] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, System.Boolean isNullable, System.Boolean checkType) [0x000c4] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject (System.Xml.Serialization.XmlTypeMapping typeMap, System.Boolean isNullable, System.Boolean checkType) [0x0002e] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot (System.Xml.Serialization.XmlTypeMapping rootMap) [0x0005e] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot () [0x00022] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializer.Deserialize (System.Xml.Serialization.XmlSerializationReader reader) [0x0005e] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializer.Deserialize (System.Xml.XmlReader xmlReader) [0x00026] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at System.Xml.Serialization.XmlSerializer.Deserialize (System.IO.Stream stream) [0x00015] in <82aef17918d14de3a4a7ef2f6032adc1>:0 
  at DataHandle.LoadGame () [0x0002c] in <c4c97695b8fc4125a27e468658af250b>:0 
  at UnityEngine.Events.InvokableCall.Invoke () [0x00011] in <a5bfa1597b74492eaabf3efc1f9c334a>:0 
  at UnityEngine.Events.UnityEvent.Invoke () [0x00023] in <a5bfa1597b74492eaabf3efc1f9c334a>:0 
  at UnityEngine.UI.Button.Press () [0x00027] in <a7b3e9f85ecb4036a981910deb3e21aa>:0 
  at UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) [0x00011] in <a7b3e9f85ecb4036a981910deb3e21aa>:0 
  at UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) [0x00008] in <a7b3e9f85ecb4036a981910deb3e21aa>:0 
  at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00070] in <a7b3e9f85ecb4036a981910deb3e21aa>:0 
UnityEngine.DebugLogHandler:Internal_LogException()
UnityEngine.DebugLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMousePress(MouseButtonEventData)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent(Int32)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent()
UnityEngine.EventSystems.StandaloneInputModule:Process()
UnityEngine.EventSystems.EventSystem:Update()

A:

In your XML, "passenger" is lower case. Your class name is upper case. Change your XML property to <Passenger Name=""/>
You should also have this as an array/list like so:
<Passengers>
    <Passenger Name="Gary" Position="Driver" />
    <Passenger Name="Mary" Position="Front Passenger" />
    <Passenger Name="Jorgen" Position="Back Left Passenger" />
    <Passenger Name="Alien 1" Position="Gary's Stomach" />
</Passengers>

Extra
Give characters and passengers an ID so that they can be referenced in whatever context in your save file. "Name" is ambiguous. Is that the unique identifier? Is it the string you use when they're displayed?
<Characters>
    <Character Name="Chuck" ID="1" />
    ...
</Characters>

...

<Passengers>
    <Passenger ID="1" />
    ...
</Passengers>

