0

我的 XML 文件中有数字和后者。Numbers 由 4 个项目组成,但可以增加,后者由一批后者组成,我需要做的就是从 Numbers 中获取每个项目并从 Latters 分配给它的后者。

我在下面提出了一个解决方案,但没有任何成功,任何解决它的帮助将不胜感激:)

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;
        }
    }
}

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>
4

2 回答 2

1

一个有用的提示:

我相信您想为此任务使用字典或集合,而不是列表。

如果您使用不允许多个集合的集合,那么您不必做太多的逻辑。您可以检查项目是否存在并添加或不添加。

于 2013-01-10T22:12:59.067 回答
0

尝试这个

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);
        }

        // ...
    }
}
于 2013-01-10T22:31:04.153 回答