/// <summary> /// Leser navn og beskrivelser av funksjonen og alle dens variable, fra en C# xml fil. /// Dobbelarrayen har to kolonner. Første kolonne er navn, mens andre kolonne er beskrivelser. Rad en inneholder info om funksjonen, mens resten av radene er info om variablene. /// </summary> /// <param name="funkNavn">Navnet på funksjonen man vil ha info om.</param> /// <param name="fil">Full path med filnavn til xml filen.</param> /// <returns>Dobbelarrayen har to kolonner. Første kolonne er navn, mens andre kolonne er beskrivelser. Rad en inneholder info om funksjonen, mens resten av radene er info om variablene.</returns> public static string[,] XmlLesVarBeskFraFunk(string funkNavn, string fil) { Xml.XmlTextReader rd = new Xml.XmlTextReader(fil); System.Collections.Generic.List <string> funkVarBeskLi = new System.Collections.Generic.List <string>(); System.Collections.Generic.List <string> funkVarNavnLi = new System.Collections.Generic.List <string>(); bool iFunk = false; string reg = "([.]" + funkNavn + "+([(]))"; //matcher punktum, etterfulgt av funksjonsnavnet, etterfulgt av parentesstart. while (rd.Read()) { if (rd.Name == "member") { //Funksjonsnavn if (iFunk) { break; //Ferdig med funksjonen. } string attr = ""; for (int j = 0; j < rd.AttributeCount; j++) { attr = rd.GetAttribute(0); //Hvis jeg ikke har med for-løkken, så får jeg en feilmelding. } if (RegExp.Regex.Match(attr, reg).Success) { iFunk = true; funkVarNavnLi.Add(funkNavn); } } else if (iFunk && rd.Name == "param") { //Variabelnavn og beskrivelse funkVarNavnLi.Add(rd.GetAttribute(0).Trim()); funkVarBeskLi.Add(rd.ReadString().Trim()); } else if (iFunk && rd.Name == "summary") { //Funksjonsbeskrivelse string attr = rd.ReadString(); Parser.Parser p = new Parser.Parser(attr); string[] funkBeskLi = p.ReadStrings('\n'); //Kvitter meg med whitespace etter linjeskift. attr = ""; foreach (string s in funkBeskLi) { attr += s.Trim() + " "; //Erstatter linjeskift+whitespace med et mellomrom. Kan alternativt erstatte det med et linjeskift uten whitespace. } funkVarBeskLi.Add(attr.Trim()); } } rd.Close(); if (!iFunk) { Console.WriteLine("Fant ikke funksjonen " + funkVarNavnLi[0] + " i xmlfilen."); return(null); } string[,] funkVarNavnBeskLi = new string[funkVarBeskLi.Count, 2]; for (int i = 0; i < funkVarNavnBeskLi.GetLength(0); i++) { funkVarNavnBeskLi[i, 0] = funkVarNavnLi[i]; funkVarNavnBeskLi[i, 1] = funkVarBeskLi[i]; } return(funkVarNavnBeskLi); }