How do i load Xml and assign variables to player in C#?

I have a working C# script for creating a save file, but i cannot figure out how to load its contents and reapply them to my player on Load(). Please don’t list old posts. I have tried countless times to use the old posts as reference, but it never works as it should.

Currently, the editor tells me that i cannot convert ‘object’ to ‘PlayerContainer’. PlayerContainer is a Class i created.

Saving to an xml file works, loading it and assigning it’s contents to my player does not.

PlayerContainer:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;

public class PlayerContainer { 
[XmlArray("Players")]
public List<Player> saveData;
	
}

Player:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;

public class Player {
	[XmlElement("playerHp")]
	public int playerHp;
	public int playerMaxHp;
	public int playerMp;
	public int playerMaxMp;
	public int attack;
	public int defense;
	public int magic;
	public int ranged;
	public List<Item> items;
	public void MakePlayerData(int ph, int pmh, int pm, int pmm, int atk, int def, int mag, int rng, List<Item> it){
		playerHp = ph;
		playerMaxHp = pmh;
		playerMp = pm;
		playerMaxMp = pmm;
		attack = atk;
		defense = def;
		magic = mag;
		ranged = rng;
		items = it;
	}
}

MyPlayerScripts current Save() and Load()

void Save(){
		playerData.MakePlayerData(playerHp, playerMaxHp, playerMp, playerMaxMp, attack, defense, magic, ranged, inventoryScript.items);
		var serializer = new XmlSerializer(typeof(PlayerContainer));
		var stream = new FileStream(path, FileMode.Create);
		serializer.Serialize(stream, playerContainer);
		stream.Close();
	}

	public void Load(){
		var serializer = new XmlSerializer(typeof(PlayerContainer));
		var stream = new FileStream(path, FileMode.Open);
		playerContainer = serializer.Deserialize(stream);
	}

Any ideas what i am doing wrong?

Edit: I forgot to mention I am creating new instances of my PlayerContainer and Player classes. All changes are targeting those instances.

public PlayerContainer playerContainer; &&

public Player playerData;

your missing a cast in your Load method ie:

playerContainer = serializer.Deserialize(stream) as PlayerContainer;