2013-01-10 6 views
0

J'ai des nombres et des derniers dans mon fichier XML. Les nombres se composent de 4 articles mais peuvent être augmentés et les derniers se composent du lot de ces derniers, ce que je dois faire est juste obtenir chaque articles des nombres et assigner à ses derniers des derniers.Comment lier un article à un autre?

je suis venu avec une solution ci-dessous, mais sans aucun succès, aucune aide pour y remédier sera apprécié :)

class aWithItsB{ 
//It means that nextA stores 1 number and 
//nextLattersBs stores latters for each number according XML file. 
    public string nextA; 
    public List<string> nextLattersBs = new List<string>(); 

    } 

public class AB : MonoBehaviour { 

    void Start() { 

     XmlDocument doc = new XmlDocument(); 
     doc.Load("D:\\new.xml"); 

     string lastNumber=""; 
     XmlNodeList numbers = doc.SelectNodes("AB/AandB/@numbers"); 
     XmlNodeList latters = doc.SelectNodes("AB/AandB/@latters"); 
     foreach(XmlNode number in numbers){ 
     if(number.Value!=lastNumber){ 
      foreach(XmlNode latter in latters){ 
      aWithItsBs AandB = new aWithItsB(); 
      AandB.nextA = number.Value; 
      AandB.nextLattersB.Add(latter.Value); 
        print(number.Value + "" + latter.Value); 
      } 
     } 
     lastNumber = number.Value; 
     } 
    } 
} 

fichier XML:

<?xml version="1.0" encoding="iso-8859-1"?> 
<AB> 
<AandB numbers ="1" latters = "a"></AandB> 
<AandB numbers ="1" latters = "b"></AandB> 
<AandB numbers ="1" latters = "c"></AandB> 
<AandB numbers ="1" latters = "c"></AandB> 
<AandB numbers ="2" latters = "b"></AandB> 
<AandB numbers ="2" latters = "x"></AandB> 
<AandB numbers ="3" latters = "y"></AandB> 
<AandB numbers ="3" latters = "a"></AandB> 
<AandB numbers ="3" latters = "z"></AandB> 
<AandB numbers ="4" latters = "y"></AandB> 
<AandB numbers ="4" latters = "x"></AandB> 
<AandB numbers ="4" latters = "a"></AandB> 
</AB> 
+2

"Lettres" il est écrit "Lettres". MES YEUX!!! AAAAH – Hogan

+6

Est-il épelé * * ou * *? Je pense que ce dernier. –

+0

@MikeChristensen - LOL – Hogan

Répondre

1

Un conseil utile:

Je crois que vous voulez utiliser un dictionnaire ou un ensemble pour cette tâche et non une liste.

Si vous utilisez une collection qui n'autorise pas les multiples, vous n'avez pas besoin de faire autant de logique. Vous pouvez vérifier si un élément est présent et l'ajouter ou non.

+0

je vous remercie pour votre réponse, j'ai jeté un coup d'oeil dans les conseils et je n'ai pas trouvé utile de résoudre le problème. Je dois absolument utiliser une structure, et réparer ma façon actuelle, avez-vous les conseils pour cela? – user1968253

0

Essayez cette

class NumberLetter 
{ 
    public string Number {get; set;} 
    public string Letter {get; set;} 

    NumberLetter(string number, string letter) 
    { 
     Number = number; 
     Letter = letter; 
    } 
} 

public class AB : MonoBehaviour { 

    void Start() { 



     List<NumberLetter> myList = new List<NumberLetter>(); 
     myList.Add(new NumberLetter("2", "a")); 
     myList.Add(new NumberLetter("2", "b")); 
     myList.Add(new NumberLetter("2", "c")); 
     // ... 
     // writing 
     sing (var sw = new StreamWriter("D:\\new.xml")) 
     { 
      var g = new XmlSerializer(typeof(List<NumberLetter>)); 
      g.Serialize(sw, myList); 
     } 

     // reading 
     using (var sr = new StreamReader("D:\\new.xml")) 
     { 
      var l = new XmlSerializer(typeof(List<NumberLetter>)); 
      myList = (List<NumberLetter>)l.Deserialize(sr); 
     } 

     // ... 
    } 
} 
+0

merci pour votre réponse, l'avez essayé avant de poster ici? – user1968253

Questions connexes