如何从XML文件中读取数组?

时间:2014-02-06 14:12:02

标签: c# xml arrays

目前我得到了这个:

class robot
{
    Configuratie config = new Configuratie();
    short[,] AlleCoordinaten = new short[3, 6] 
    {
        {1,2,3,4,5,6},
        {6,5,4,3,2,1},
        {2,3,4,5,6,7}
    };
}

但是我想把那个数组放在一个XML文件中,所以这就是我试过的:

class robot
{
Configuratie config = new Configuratie();

    short[,] AlleCoordinaten = new short[3, 6] 
    {
        {(config.GetIntConfig("robot","position1"))},
        {(config.GetIntConfig("robot","position2"))},
        {(config.GetIntConfig("robot","position3"))}
    }; 
}

配置文件:

    class Configuratie
    {
        private XDocument xdoc;

        public Configuratie()
        {
            xdoc = XDocument.Load("configuratie.xml");
        }
    public int GetIntConfig(string desc1, string desc2)
    {
        int value = 0;
        if (string.IsNullOrEmpty(desc1))
        {
            value = 0;
        }
        if (!string.IsNullOrEmpty(desc1) && !string.IsNullOrEmpty(desc2))
        {
            foreach (XElement node in xdoc.Descendants(desc1).Descendants(desc2))
            {
                value = Convert.ToInt16(node.Value);
            }
        }
        if (!string.IsNullOrEmpty(desc1) && string.IsNullOrEmpty(desc2))
        {  
            foreach (XElement node in xdoc.Descendants(desc1))
            {
                value = Convert.ToInt16(node.Value);
            }
        }
        return value;
        }
    }

XML文件:

<robot>
<position1>1</position1>
<position1>2</position1>
<position1>3</position1>
<position1>4</position1>
<position1>5</position1>
<position1>6</position1>
etc...
<position3>7</position3>
</robot>

它仍然无法正常工作,你们可以帮助我解决我做错的事情并举一个例子。我得到的错误是:我得到的错误是:预期长度为6的数组初始值设定项。并且:字段初始值设定项不能引用非静态字段方法或属性。我知道有一种更简单的方法,但我想用配置文件来做。 我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我认为你的意思是(从这些数据构建XML)。 这是怎么做的:

short[,] AlleCoordinaten = new short[3, 6] { {1,2,3,4,5,6}, {6,5,4,3,2,1}, {2,3,4,5,6,7} }; XElement elem = new XElement("robot"); for (int i = 0; i < AlleCoordinaten.GetUpperBound(0); i++) { for (int j = 0; j < AlleCoordinaten.GetUpperBound(1); j++) { elem.Add(new XElement(string.Format("position{0}",i +1),AlleCoordinaten.GetValue(i,j))); } }
short[,] AlleCoordinaten = new short[3, 6] { {1,2,3,4,5,6}, {6,5,4,3,2,1}, {2,3,4,5,6,7} }; XElement elem = new XElement("robot"); for (int i = 0; i < AlleCoordinaten.GetUpperBound(0); i++) { for (int j = 0; j < AlleCoordinaten.GetUpperBound(1); j++) { elem.Add(new XElement(string.Format("position{0}",i +1),AlleCoordinaten.GetValue(i,j))); } }

答案 1 :(得分:-2)

我在这里看到一个简单的拼写错误:

config.GetIntConfig("robot","positoin1")

所以你正在寻找“positoin”并在文件中你有“位置”。