Snabb träff: Läsa InfoPath-XML-direkt från en SPListItem i SharePoint

Jag är varit arbetar med ett projekt där jag ska packa bilagor från ett InfoPath-formulär. Det finns några bra resurser för parsning av InfoPath-formulär (som är bara XML-filer, så det är faktiskt ganska lätt).

Medan jag höll på att bygga upp projektet, Jag började genom att hämta ett InfoPath-formulär och spara den till min lokala hårddisk. Min c# kod läste direkt från den instansen. Men, InfoPath-formulär verkligen lever inuti ett SharePoint-formulärbibliotek. Jag gjorde en liten halv hjärtan sökning om du vill veta hur till läsa den direkt från biblioteket och gav nästan upp, i vilket fall jag skulle ha sparat formuläret till en lokal temp katalog och läsa den därifrån. Men, Det finns ingen anledning att gå igenom de fälgar som du kan läsa den direkt från biblioteket. Detta lilla utdrag visar hur:

/// Klass definitionen grejer här, inklusive:
privat SPFile mySharePointFile; /* Del av en SPList */
// Mer kod går här och inne en metod i klassen har vi:
XmlTextReader textReader;
textReader = nya XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Ingen;

textReader.Read();

// Om noden har värde

medan (textReader.Read())
{

... och så vidare och så vidare...

De viktiga bit ovan är att vi kan läsa InfoPath direkt via OpenBinaryStream() metoden kallar på SPFile som en parameter till konstruktören på XmlTextReader. Det fungerar bra.

</slutet>

Prenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Technorati Tags:

En reaktion på ”Snabb träff: Läsa InfoPath-XML-direkt från en SPListItem i SharePoint

  1. Harald

    Hej,
    Jag behöver hjälp i denna , Jag har sharepoint 2007 webbplats och infopath med en upprepande tabell , vad jag behöver göra är när formuläret sparas till sharepoint-formulärbibliotek jag behöver loop och spara data till en lista med SP form bibliotek händelsehanterare.

    Någon hjälp uppskattas verkligen.

    Tack

    Svar

Lämna svar

Din e-postadress kommer inte att publiceras. behövliga fält är markerade *