Partager via


CachedDataItem.Xml, propriété (System 2007)

Mise à jour : novembre 2007

Obtient ou définit la représentation XML de l'objet de données en mémoire cache représenté par le CachedDataItem.

Espace de noms :  Microsoft.VisualStudio.Tools.Applications
Assembly :  Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0 (dans Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll)

Syntaxe

Public Property Xml As String

Dim instance As CachedDataItem
Dim value As String

value = instance.Xml

instance.Xml = value
public string Xml { get; set; }

Valeur de propriété

Type : System.String

Représentation XML de l'objet de données en mémoire cache représenté par le CachedDataItem.

Notes

Pour obtenir la valeur d'un objet de données mis en cache, utilisez la propriété Xml afin de désérialiser la représentation XML des données mises en cache dans une nouvelle instance de l'objet de données mis en cache. Vous pouvez ensuite apporter des modifications à cette copie et sérialiser de nouveau les modifications dans le cache de données.

Dans la plupart des cas, vous pouvez utiliser la méthode SerializeDataInstance pour sérialiser l'objet modifié dans le cache de données. Si vous souhaitez exécuter votre propre sérialisation des modifications apportées aux données mises en cache, vous pouvez également écrire directement dans la propriété Xml. Toutefois, si vous apportez des modifications à un DataSet, un DataTable ou un groupe de données typé qui sera mis à jour dans une base de données à l'aide d'un DataAdapter, spécifiez le format DiffGram lorsque vous écrivez les modifications dans les données mises en cache. Sinon, les modifications apportées au DataSet ou au DataTable seront ajoutées à la base de données en tant que nouvelles lignes et non en tant que lignes modifiées. Pour plus d'informations, consultez Accès aux données des documents sur le serveur.

Exemples

L'exemple de code suivant utilise la propriété Xml pour obtenir la valeur d'une chaîne mise en cache dans une feuille de calcul d'un classeur Excel. L'exemple affiche la valeur dans une boîte de message.

Cet exemple requiert une référence aux assemblys Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll et Microsoft.VisualStudio.Tools.Applications.Runtime.v9.0.dll et à l'instruction Imports (pour Visual Basic) ou using (pour C#) pour les espaces de noms Microsoft.VisualStudio.Tools.Applications et Microsoft.VisualStudio.Tools.Applications.Runtime en haut du fichier de code. Cet exemple suppose également que le classeur spécifié a une personnalisation avec une classe Sheet1 dans l'espace de noms ExcelWorkbook1 et une chaîne mise en cache dans la classe Sheet1 nommée CachedString.

Private Sub ReadCachedStringValue(ByVal documentPath As String)
    Dim runtimeVersion As Integer = 0
    Dim serverDocument1 As ServerDocument = Nothing

    Try
        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath)
        If runtimeVersion <> 3 Then
            MessageBox.Show("This document does not have a Visual Studio Tools for Office " & _
                "customization, or it has a customization that was created with a version of " & _
                "the runtime that is incompatible with this version of the ServerDocument class.")
            Return
        End If

        If ServerDocument.IsCacheEnabled(documentPath) Then
            serverDocument1 = New ServerDocument(documentPath)
            Dim hostItem1 As CachedDataHostItem = _
                serverDocument1.CachedData.HostItems("ExcelWorkbook1.Sheet1")
            Dim dataItem1 As CachedDataItem = hostItem1.CachedData("CachedString")

            If dataItem1 IsNot Nothing AndAlso _
                Type.GetType(dataItem1.DataType).Equals(GetType(String)) Then

                Using stringReader As New System.IO.StringReader(dataItem1.Xml)
                    Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(String))
                    Dim cachedString As String = serializer.Deserialize(stringReader)
                    MessageBox.Show("The value of CachedString is: " + cachedString)
                End Using
            End If
        Else
            MessageBox.Show("The specified document does not have cached data.")
        End If

    Catch ex As System.IO.FileNotFoundException
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.")
    Catch ex As UnknownCustomizationFileException
        System.Windows.Forms.MessageBox.Show("The specified document has a file " & _
            "extension that is not supported by Visual Studio Tools for Office.")
    Finally
        If Not (serverDocument1 Is Nothing) Then
            serverDocument1.Close()
        End If
    End Try
End Sub
private void ReadCachedStringValue(string documentPath)
{
    int runtimeVersion = 0;
    ServerDocument serverDocument1 = null;

    try
    {
        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath);

        if (runtimeVersion != 3)
        {
            MessageBox.Show("This document does not have a Visual Studio Tools for " +
                "Office customization, or it has a customization that was created with " +
                "a version of the runtime that is incompatible with this version of the " +
                "ServerDocument class.");
            return;
        }

        if (ServerDocument.IsCacheEnabled(documentPath))
        {
            serverDocument1 = new ServerDocument(documentPath);
            CachedDataHostItem hostItem1 = 
                serverDocument1.CachedData.HostItems["ExcelWorkbook1.Sheet1"];
            CachedDataItem dataItem1 = hostItem1.CachedData["CachedString"];

            if (dataItem1 != null && 
                Type.GetType(dataItem1.DataType) == typeof(string))
            {
                using (System.IO.StringReader stringReader =
                    new System.IO.StringReader(dataItem1.Xml))
                {
                    System.Xml.Serialization.XmlSerializer serializer =
                        new System.Xml.Serialization.XmlSerializer(typeof(string));
                    string cachedString = serializer.Deserialize(stringReader) as string;
                    MessageBox.Show("The value of CachedString is: " + cachedString);
                }
            }
        }
        else
        {
            MessageBox.Show("The specified document does not have cached data.");
        }
    }
    catch (System.IO.FileNotFoundException)
    {
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.");
    }
    catch (UnknownCustomizationFileException)
    {
        System.Windows.Forms.MessageBox.Show("The specified document has a file " +
            "extension that is not supported by Visual Studio Tools for Office.");
    }
    finally
    {
        if (serverDocument1 != null)
            serverDocument1.Close();
    }
}

Pour obtenir un exemple de code illustrant comment utiliser la propriété Xml pour modifier un DataSet mis en cache et sérialiser les modifications apportées, consultez Comment : modifier les données mises en cache dans un classeur sur un serveur.

Autorisations

Voir aussi

Référence

CachedDataItem, classe

Membres CachedDataItem

Microsoft.VisualStudio.Tools.Applications, espace de noms