renholmMedlem sedan apr. 20012 266 inlägg Har nu försökt läsa in en xml fil som ser ut så här
<?xml version="1.0" encoding="utf-8" ?>
<ConfigFiles>
<Graphic>Graphic.xml</Graphic>
<Security>Security.xml</Security>
<Web>Web.xml</Web>
<WebService>WebService.xml</WebService>
</ConfigFiles>
till en Hshtable då jag vill ha t.ex <Graphic> som key och sedan Graphic.xml som värde, har försökt med BinaryFormatter, XMLSerialization(heter det så?) samt SoapFormatting utan att lyckas, borde jag kanske försöka med att läsa xml filen rad för rad och lägga in?
Det beror på hur du menar. Är det ett bestämda element i ConfigFiles är en XmlSerializer rätt trevlig, då får du en klass, och så får du själv lägga till i hashtabellen för varje element. typ såhär:
public class ConfigFiles {
public String Graphic;
public String Security;
public String Web;
public String WebService;
}
class Test {
static void Main() {
StreamReader reader = new System.IO.StreamReader(@"c:\ConfigFiles.xml");
XmlSerializer serializer = new XmlSerializer(typeof(ConfigFiles));
ConfigFiles configFiles = (ConfigFiles) serializer.Deserialize(reader);
Hashtable ht = new Hashtable();
// lägg till varje element såhär
ht.Add("Graphics", configFiles.Graphic);
}
}
(För så få element skulle jag nog skippa hashtabellen och jobba direkt med configFiles-klassen istället)
renholmMedlem sedan apr. 20012 266 inlägg Anledningen till att jag valde just Hashtable är att jag tänkte att det skulle vara rätt dynamiskt så jag slipper ändra i ConfigFiles classen varje gång jag kanske vill lägga till en fil. Annars fungerar XmlSerializer alldeles utmärkt.
Isåfall kanske xpath är bättre, typ:
XPathDocument doc = new XPathDocument(new XmlTextReader(new StreamReader(@"c:\ConfigFiles.xml")));
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator iterator = nav.Select("/ConfigFiles/*");
while (iterator.MoveNext()) {
Console.WriteLine("<{0}> = {1}", iterator.Current.Name, iterator.Current.Value);
}
renholmMedlem sedan apr. 20012 266 inlägg tack, precis vad jag letade efter.