Element van XML krijgen

Status
Niet open voor verdere reacties.

badboyR

Gebruiker
Lid geworden
11 apr 2012
Berichten
28
Hoe moet je het element krijgen van een waard van een xml file? Hier zullen wel meerde manieren voor zijn, maar ik wil het achterhalen met system.xml

Ik heb de waarde op deze manier gekregen:
Code:
            string Params2 = null;
            if (Params == null)
            {
                locatie = Directory.GetCurrentDirectory() + "\\Data\\plugins.xml";
                reader = new XmlTextReader(locatie);
                XmlNodeType type2;
                while (reader.Read())
                {
                    type2 = reader.NodeType;

                    if (type2 == XmlNodeType.Element)
                    {
                        if (reader.Name == Lijn[0])
                        {
                            reader.Read();
                            Params2 = reader.Value;
                        }
                    }
                }
            }

En het gaat om deze file:
Code:
<plugins>
  <example.dll>
    <GET_FIRING_STATE>opcode1 VAR</GET_FIRING_STATE>
	<GET_PLAYER_DAMAGED_BY>opcode2 VAR</GET_PLAYER_DAMAGED_BY>
  </example.dll>
</plugins>

Ik wil achterhalen in welke categorie die staat, dus bij de waarde "opcode1 VAR" wil ik example.dll uitkrijgen. Weet iemand hoe dit moet?
Alvast bedankt.
 
hier:

Code:
docNav = new XPathDocument("PAD NAAR BESTAND.");
NodeIter = nav.Select("//GET_FIRING_STATE");
  if(NodeIter.MoveNext())
  {
      NodeIter.Current.Value; //DIT IS JE UITKOMST :)
  };

Groeten Corné
 
Bedankt, ik heb het nog niet kunnen testen maar het zal wel werken. Ik moet nu wat ingewikkelders doen, ik moet een void in een appare dll laden. Ik heb de functienaam in een string staan en weet niet hoe ik de void met een string moet aanroepen.

Normaal is het gewoon "naam.opcode1(invoer[1])", maar ik heb "opcode1" in stringformaat. Weet iemand hoe ik dit moet doen?

Ik laat de dll trouwens bij het uitvoeren:
Code:
internal static void FindOpcode(string lijn, string Parameters)
        {
            string Dll = "";
            string locatie = Directory.GetCurrentDirectory() + "\\Data\\plugins.xml";

            XPathDocument docNav = new XPathDocument(locatie);
            XPathNavigator nav = docNav.CreateNavigator();

            XPathNodeIterator NodeIter = nav.Select(lijn); // of ("//" + lijn)?
            if (NodeIter.MoveNext())
            {
                Dll = NodeIter.Current.Value;
            }

            string Locatie = Directory.GetCurrentDirectory();
            Locatie += @"\Plugins\" + Dll;
            string Extra = Dll + ".";

            string[] Opcode = Parameters.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            Type[] externDLLtypes = Assembly.LoadFrom(Locatie).GetTypes();

            int index = -1;
            int index2 = -1;
            foreach (string ding in Opcode)
            {
                index++;                
            }

            int DLLindex = 0;

            foreach (Type x in externDLLtypes)
            {
                index2++;
                string Temp = Regex.Replace(x.ToString(), Extra, "");
                if (Temp == Opcode[0])
                {
                    DLLindex = index2;
                }
            }

            dynamic naam = Activator.CreateInstance(externDLLtypes[DLLindex]);

            switch (index)
            {
                case 0:
                    ???
                    break;

            }
 
1. Ik zou als ik jou was even kijken hoe xpath werkt dan weet je hoe mijn code werkt en weet je dat die // voor die naam moet

2.
Code:
MethodInfo method = externDLLtypes[DLLindex].GetMethod("NAAM VAN FUNCTIE");
object result = method.Invoke(this,  PARAMETERS);

Zie hier http://www.vcskicks.com/call-function.php


Groeten, Corné
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan