webForumDet fria alternativet

Lättaste sätt att läsa XML

.NET

2 svar · 199 visningar · startad av icaaq

Medlem sedan okt. 20005 273 inlägg
Frågan#1

Jag har denna XML-fil:

[red]
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!--How many minutes a user is online "green" -->
    <online minutes="3"/>
    <!--How many minutes a user is offline "red" -->
    <offline minutes="10"/>
    <!--How many minutes the conversation is saved, If 0 all conversation is saved -->
    <history minutes="0"/>
</configuration>
[/red]

Nu till frågan, Hur hämtar jag ut värden online, offline och history lättast mha C#??
mvh icaaq

Medlem sedan apr. 20012 266 inlägg
#2

System.Xml.Serialization.XmlSerializer är bra då, du har en class som speglar din fil så när du vill komma åt ditt värde så gör du bara så här: minclass.mittvärde.

Medlem sedan okt. 20005 273 inlägg
#3

Löste det så här:

[red]
public void FromXML(string file)
{
	if(File.Exists(file))
	{
		StreamReader sr = new StreamReader(file);
		XmlTextReader xtr = new XmlTextReader(sr);
		xtr.WhitespaceHandling = WhitespaceHandling.None;
		bool foundBegin = false;
		while(xtr.Read())
		{
			switch (xtr.NodeType)
			{
				case XmlNodeType.Element:
					if(xtr.Name.ToLower().Equals("configuration"))foundBegin=true;
					StartElement(xtr,xtr.Name);
					break;
			}
		}
		if(!foundBegin)
		{
			throw new Exception("Invalid format of file");
		}

	}
} 
private void StartElement(XmlTextReader reader, string elementName)
{
	switch (elementName.ToLower())
	{
		case "online":
			_online = Convert.ToInt16(reader.GetAttribute("minutes"));
			break;
		case "offline":
			_offline = Convert.ToInt16(reader.GetAttribute("minutes"));
			break;
		case "history":
			_history = Convert.ToInt16(reader.GetAttribute("minutes"));
			_rows = Convert.ToInt16(reader.GetAttribute("rows"));
			break;
	}
}
[/red]

mvh icaaq

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
136 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
136 ms — ändringar (db)