I have a problem that I'm afraid I can't get on with. Here is a part of my code which should be sufficient to solve the problem.
At the bottom of the public static string[][][][] Read_XML(int CountInOutsInXMLResult) I created a jagged array and want to access the Array_XML_Source and Array_XML_VariableGroup arrays in the main, but unfortunately this doesn't work. How to do this correctly?
public static string[][][] Read_XML(int CountInOutsInXMLResult)
{
string string_xml2 = "";
string string_xml3 = "";
string ecatSource = "ecatSource";
string name = "name";
string splitstring = "";
string VariableGroup = "VariableGroup";
int xml_zeile = 0;
int variablecolumncounter = 0;
int variablerowcounter = 0;
bool inout = false;
bool variablegroup = false;
bool wurdebereitshochgezaehlt = false;
string[][] Array_XML_Source = new string[CountInOutsInXMLResult][];
string[][] Array_XML_VariableGroup = new string[CountInOutsInXMLResult + 1][];
//Array_XML_Source initialisieren
for (int i = 0; i < CountInOutsInXMLResult; i++) //Array_XML_Source initialisieren
{
Array_XML_Source[i] = new string[15];
}
//Array_XML_VariableGroup initialisieren
for (int i = 0; i < (CountInOutsInXMLResult + 1); i++)
{
Array_XML_VariableGroup[i] = new string[15];
}
XmlTextReader readerxml2 = new XmlTextReader("variablegroups.xml");
while (readerxml2.Read())
{
switch (readerxml2.NodeType)
{
case XmlNodeType.Element: //Ausführen wenn ein Knotenanfang vorkommt
string_xml2 = readerxml2.Name;
//Ausführen wenn Variablegroup im Knotenpunkt steht
if (string_xml2.Equals(VariableGroup))
{
variablegroup = true;
}
break;
case XmlNodeType.EndElement: //Ausführen wenn ein Knotenende vorkommt
string_xml3 = readerxml2.Name;
//Ausführen wenn Variablegroup im Knotenpunkt steht
if (string_xml3.Equals(VariableGroup))
{
variablecolumncounter = variablecolumncounter - 1; //Zähle eine Spalte zurück
}
break;
case XmlNodeType.Text: //Ausführen wenn Text hinter dem Knoten steht
//Ausführen wenn VariableGroup vorkam und nun name im Knoten steht
if (string_xml2.Equals(name) && variablegroup)
{
Array_XML_VariableGroup[variablerowcounter][variablecolumncounter] = readerxml2.Value; //Schreibe den Inhalt vom Knoten name in ein Array
variablegroup = false;
variablecolumncounter = variablecolumncounter + 1; //Zähle eine Spalte hoch
wurdebereitshochgezaehlt = true;
}
// Ausführen wenn ecatSource im Knoten steht
if (string_xml2.Equals(ecatSource))
{
inout = true;
}
// Ausführen wenn zuvor Variablegroup im Knoten stand und nun name im Knoten steht oder wenn ecatSource im Knoten steht
if ((string_xml2.Equals(ecatSource) || string_xml2.Equals(name) && inout)) // Ausführen wenn ecatSource im Knoten steht
{
splitstring = readerxml2.Value.Replace(" ", "");//Schreibe den Inhalt des Knotens ecatsource in string_xml
if (string_xml2.Equals(ecatSource)) //Ausführen wenn ecatsource im Knoten steht
{
string[] klemme_xml = splitstring.Split(new[] { '.' }, StringSplitOptions.None);//Splte string_xml bei .
int k = 0;
for (int j = 0; j < klemme_xml.Length; j++) //Schreibe so viel wie gesplittet wurde in das Array_XML_Source
{
k = j + 1;
Array_XML_Source[xml_zeile][k] = klemme_xml[j];
}
}
else //Ausführen wenn nicht ecatsource im Knoten steht
{
if (!wurdebereitshochgezaehlt) //nur ausführen wenn wegen variablegroup nicht bereits hochgezählt wurde
{
variablecolumncounter = variablecolumncounter + 1;
}
Array_XML_VariableGroup[variablerowcounter][variablecolumncounter] = readerxml2.Value; //Schreibe den Wert in die aktuelle Reihe und Spalte des Arrays
Console.Write("{0} {1} | {2}\n", Array_XML_VariableGroup[variablerowcounter][variablecolumncounter], variablerowcounter, variablecolumncounter);
variablerowcounter = variablerowcounter + 1; //Zähle die Reihe eins hoch
for (int i = 0; i < variablecolumncounter; i++) //Belegung der Variablengruppen
{
Array_XML_VariableGroup[variablerowcounter][i] = Array_XML_VariableGroup[variablerowcounter - 1][i]; //Da davor schon eins hoch gezählt wurde hier wieder eins runter zählen
Console.Write("{0} {1} | {2}\n", Array_XML_VariableGroup[variablerowcounter][i], variablerowcounter, i);
}
Array_XML_Source[xml_zeile][0] = splitstring;
xml_zeile += 1; //Zähle die xml_zeile für source um eins hoch
inout = false; //setzt inout für ecatsource zurück
}
}
//Array_Name_Path_and_Variables(Array_XML_VariableGroup, 0);//**************
break;
}
}
return new[] { Array_XML_Source, Array_XML_VariableGroup};
}
Comments
Post a Comment