Help with XML reading and writing

Hi all, hope you can help me out, the line wordLists = serializer.Deserialize(stream) as WordLists;, is getting the error:

InvalidOperationException: was not expected
System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot (System.Xml.Serialization.XmlTypeMapping rootMap)
System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot ()
System.Xml.Serialization.XmlSerializer.Deserialize (System.Xml.Serialization.XmlSerializationReader reader)
Rethrow as InvalidOperationException: There is an error in XML document.
System.Xml.Serialization.XmlSerializer.Deserialize (System.Xml.Serialization.XmlSerializationReader reader)
System.Xml.Serialization.XmlSerializer.Deserialize (System.Xml.XmlReader xmlReader)
System.Xml.Serialization.XmlSerializer.Deserialize (System.IO.Stream stream)
CreateWordList.AddWordListToList () (at Assets/scripts/XML/CreateWordList.cs:59)
CreateWordList.AddWordList () (at Assets/scripts/XML/CreateWordList.cs:38)
UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:165)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:36)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:45)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, >UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, >UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()

Heres my code:

public void AddWordListToList()
{
    XmlSerializer serializer = new XmlSerializer(typeof(WordLists));
    string filename2 = Application.dataPath + "/StreamingAssets/WordLists/wordlists.xml";
    FileStream stream = new FileStream(filename2, FileMode.Open);
    
    wordLists = serializer.Deserialize(stream) as WordLists;
    stream.Close();

    //wordLists.list.Add(WordlistName);
    foreach(WordListData data in wordLists.list)
    {
        print(WordlistName);
    }
    using(StreamWriter writer = new StreamWriter(filename2))
    {
        serializer.Serialize(writer, wordLists.list);
    }
}

// ...

[System.Serializable]
public class WordListData
{
    public string WordListName;
}

[System.Serializable]
public class WordLists
{
    public List<WordListData> list = new List<WordListData>();
}

I hope someone can help please,
Many Thanks
Tekman

The first thing is: are you sure you’ve got correct data in file “/StreamingAssets/WordLists/wordlists.xml”?

And try to make your WordListData class as:

[System.Serializable]
 public class WordListData
 {
     public string WordListName {get;set;}
     public WordListData() { }
 }

P.S. Why do you creating WordLists class with just one field of List? It is no sence to do so. Just serialize and deserialize a list without wrapping it in class.