Infopath 2007 Formualre – wie komme ich an die Daten aus C# ran ?


Jeder der mit SharePoint Workflows und Infopath 2007 Formularen zur Datenerfassung arbeitet weiss dass das XML welches die Daten enthält sehr komplex werden kann.


Der XMLReader ist hier schnell überfordert, jedoch gibt es mit Hilfe des .net Framework Tools XSD eine schöne Alternative um an die Daten sehr komfortabel heranzukommen.


Als Basis dient uns hier der XML Deserializer aus dem .net Framework - dieser muss jedoch mit einer Klasse gefüttert werden um zu funktionieren. Diese Klasse muss man jedoch nicht selbst schreiben sondern können diese aus dem Infopath-Formular generieren lassen. Dies geht wie folgt:



  • Das InfoPath Formular wie gewohnt speichern (zur Sicherheit)

  • Danach nochmal ein "Save as Source", damit wird eine Datei myschema.xsd erzeugt.

  • Aus dieser Datei wird mit XSD und die Schalter /CLASSES in eine myschema.cs erzeugt

  • Diese CS Datei kann man jetzt in das Projekt einbinden.

Der Code für die Deserialisierung sieht dann so aus:

XmlSerializer serializer = new XMLSerializer(typeof(MyFields));
xmlTextReader reader = new XMLTextReader(new
System.IO.StringReader(workflowProperties.InitiationData));
MyFields fields = serializer.Deserialize(reader);

Ggf. ist MyFields noch durch den Namen der eigneen Classe in myschema.cs zu ersetzen.


Happy Deserializing


Sven

Comments (1)
  1. In meinen Projekten bin ich neulich über eine Migration eines Lotus Notes Workflows gestolpert.

Comments are closed.

Skip to main content