IT report e-mailová adresa:
heslo:
IT report RSS 2.0
Klíčová slova: C#

Trida pro zjedoduseni prace s XML serialize a deserialize

Kdo musi caste pracovat s XML, vi ze serialize/deserialize je jedna z nejrobustnejsich technik v .NET

Pro zjednoduseni teto prace muze byt pouzita trida, ktera umi

Serializace + deserializace do/ze stringu/souboru

 

public static class XmlSerialization<T>

{

private static XmlSerializer serializer = new XmlSerializer(typeof(T));

private static CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");

 

static public T LoadXmlFromString(string tData)

{

T t;

using (TextReader textReader = new StringReader(tData))

{

t = (T)serializer.Deserialize(textReader);

}

return t;

}

 

static public T LoadXmlFromFile(string path)

{

T t;

using (TextReader textReader = new StreamReader(path))

{

t = (T)serializer.Deserialize(textReader);

}

return t;

}

 

static public void WriteXmlToFile(T t, string path)

{

using (TextWriter textWriter = new StreamWriter(path))

{

serializer.Serialize(textWriter, t);

}

}

 

static public string WriteXmlToString(T t)

{

StringBuilder sb = new StringBuilder();

using (TextWriter textWriter = new StringWriter(sb, culture))

{

serializer.Serialize(textWriter, t);

}

return sb.ToString();

}

}

 

Priklad: nacteni vsech XML definice v jednom adresari a jejich pomasirovani do objektu:

(zatim neresim co kdyz tam je XML jineho typu)

 

public static workflow[] LoadAllDefinitions(string dirpath)

{

List<definition> wfs = new List<definition>();

string[] dfFiles = Directory.GetFiles(dirpath, "*.xml");

foreach(string dfFile in dfFiles)

{

wfs.Add(XmlSerialization<definition>.LoadXmlFromFile(dfFile));

}

return wfs.ToArray<definition>();

}

public static definition[] LoadAllWorkflows()

{

return LoadAllDefinitions(ConfigurationManager.AppSettings["DefinitionDirectory"]);

}

 

Nasleduje jednoduchy priklad pouziti. Vykousa ze vsech xml souboru v danem adresari name a vsupni parametry:

 

public static List<Description> GetWorkflows()

{

Data.xsd.definition[] wfs = Data.xsd.DefinitionFileTools.LoadAllDefinitions();

List<Description> ifd = new List<Description>();

foreach (Data.xsd.definition df in dfs)

{

ifd.Add(new IngestWorkflowDescription()

{

Name = df.name,

FileInputMeans = (from param in df.parameters select param.name).ToArray<string>()

});

}

return ifd;

}

Autor: Matěj Cáha




Komentáře

jméno uživatele:

=   Přidat komentář
Klíčová slova:
ASP.NET
C#
Chystá se
Deserializace
Expression Encoder
FreeBSD
IIS 7.0
Java
MsSQL
Ostatní
PHP
PostgreSQL
Servlet
Silverlight
Stalo se
Statistika
Tomcat
Visual Studio
WCF
Windows Server 2008
Workflow Foundation
XML
pdf


Komentáře:
Jsem vcera v krabice od zehlicky nasel disk s firmware. Nevi nekdo, co s tim mam delat???

Ne - nastaveni pro IIS 6.0 jsou jine

Plati tento navod i pro IIS 6.0?