- Home /
 
Need Help Serializing/Deserializing XML
I'm rather new to parsing XML, though I think I'm getting close to a working system. I'm currently having 2 problems:
1) I'm using the web player, so I need to know exactly how I would format my directory (path) to point to the xml file on the webserver.
2) How exactly do I use the data after it has been deserialized? I have seen a couple of tutorials that just say "use this" and offer a few lines of code without actually explaining the components.
XML Sample:
 <questions>
     <question>
         <name id="1">Question 1</name>
         <body>What is the maximum length of a 10BaseT cable?</body>
         <answers>
             <answer correct="false">50 Meters</answer>
             <answer correct="false">100 Meters</answer>
             <answer correct="false">50 Feet</answer>
             <answer correct="true">100 Feet</answer>
         </answers>    
     </question>
 
 <question>
         <name id="2">Question 2</name>
         <body>What layer of the OSI 7 Layer Model does a router work at?</body>
         <answers>
             <answer correct="false">Layer 10</answer>
             <answer correct="true">Layer 3</answer>
             <answer correct="false">Layer 1</answer>
             <answer correct="false">Layer 4</answer>
         </answers>    
     </question>        
 </questions>
 
               XML Parser: using System.Xml.Serialization;
 namespace QuestionSerializer{
     
     [XmlRoot(ElementName = "questions")]
     public class Questions                            //load the root into a class
 
     {
         [XmlElement(ElementName = "question")]
         public Question[] Question { get; set; }    //load question elements into array for later use
 
     }
 
     public class Question
     {
         [XmlAttribute(AttributeName = "id")]
         public int Id { get; set; }
         
         [XmlElement(ElementName = "body")]
         public string Body { get; set; }
 
         [XmlArray("answers")]
         [XmlArrayItem("answer")]
         public Answer [] Answers { get; set; }
 
     }
 
     public class Answer
     {
 
         [XmlAttribute(AttributeName = "correct")]
         public bool Correct { get; set; }
 
 
     }
 
 }
 
               Loading XML:
 using System;
 using System.IO;
 using System.Xml.Serialization;
 using UnityEngine;
 using QuestionSerializer;
 
 public class LoadXMLDoc : MonoBehaviour {
 
     private Questions questions;
 
     void LoadXML(string path)
 
     {
         XmlSerializer serial = new XmlSerializer(typeof(Questions));
         Stream reader = new FileStream(path, FileMode.Open);
         questions = (Questions)serial.Deserialize(reader) as Questions;
         
         
 
     }
 
 }
 
               Usage (where I'm having my problems:
 using UnityEngine;
 using System.Collections;
 
 public class DisplayQuestions : MonoBehaviour {
 
     // Use this for initialization
     void Start () {
         
         //really bad usage 1
         Debug.Log("Question 1: " + LoadXMLDoc.LoadXML(FindPath).Question[0]);
     
     }
             
     IEnumerator FindPath()
  {
        //really bad usage 2
    www = new WWW(Path.Combine(Application.dataPath, "TestQuestions.xml"));
     yield return www;
    monsterCollection = MonsterContainer.LoadFromText(www.text);
  }
     
 }
 
 
               Thanks in advance.
               Comment
              
 
               
              Your answer