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:
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