Avlevering til SharePoint via XML-filer

Det er mulig dette er litt utenfor Interact, men forsøker meg likevel.

Vi har et skjema der elever kan klage på eksamenskarakterer. Informasjon som kommer inn via dette skjema skal behandles på hver elevs skole og for å få til dette, er vi avhengige av at informasjonen kommer inn i en liste SharePoint. Denne løsningen benyttet vi med suksess under avviklingen av fjorårets eksamen. Slik er løsningen satt opp:

Skjema er laget på vanlig måte og er satt opp med XML avlevering til et filområde. XML’en er definert i henhold til brukerveiledningen og inkluderer de opplysningene vi har behov for.

På SharePoint-server har vi laget et PowerShell skript som leser XML-filer og dytter innholdet inn i SharePoint. En forenklet versjon av skriptet følger:

xmlFilsti="<filsti til folder med XML-filer>"
$webUrl="<URL til der lista ligger>"
$listeNavn="<Navn på lista>"

$web = Get-SPWeb -Identity $webUrl
$liste = $web.Lists[$listeNavn]

$xmlFiler = Get-ChildItem $xmlFilsti  -filter *.xml #leser inn XML-filer

foreach ($xmlFil in $xmlFiler) {
	[xml]$xmlDok = $xmlFil | Get-Content -Encoding "UTF8"
	$nyRad = $destinasjonsListe.AddItem() #oppretter en ny rad i lista
	$nyRad['<attributt i lista>'] = $xmlFil.<node>
	#slik mappes alle ønskede felt opp
	$nyRad.Update() #lagrer raden
	
	#deretter flytter vi XML-fila til en annen folder slik at denne ikke leses på nytt
}

Skriptet kjøres regelmessig for å fange opp nye XML-filer som kommer fra skjema. Hos oss er det lagt inn en del validering og logging av hendelsene for å fange opp og avverge feil.

Saksbehandlere på skolene kan deretter fullføre jobben vha SharePointlista.

acosToSharePoint

4 Likes

Veldig spennende. Det er interessant å høre hva som lages av ulike løsninger og flyter.

Måtte endre denne:
$nyRad['<attributt i lista>'] = $xmlFil.<node>
til følgende:
$nyRad['<attributt i lista>'] = $xmlDok.<node>

Husk også på å fikse navnet på destinasjonslista, da denne har to forskjellige navn i dette skriptet.

Ellers verdt å merke seg at man må huske hele stien til noden i datainnhentingen :slight_smile:

3 Likes

Bra du fant disse feilene. Ble litt kluss da jeg prøvde å generalisere skriptet. Forsøkte å redigere innlegget for å rette opp feilene, men fikk det ikke til. Får håpe folk leser hele tråden :slight_smile: