Comment faire pour rechercher et remplacer des caractères spéciaux dans un fichier XML avec Visual Basic .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 308060 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment remplacer des caractères spéciaux dans un fichier XML (Extensible Markup Language) à l'aide de Visual Basic .NET.

Description de la technique

XML prédéfinit les références entité cinq suivantes des caractères spéciaux qui serait autrement être interprétées comme partie du langage de balisage :

Character Name Entity Reference Character Reference Numeric Reference
Ampersand & & &
Left angle bracket &lt; < &#38;#60;
Right angle bracket &gt; > &#62;
Straight quotation mark &quot; " &#39;
Apostrophe &apos; ' &#34;


Vous pouvez utiliser références entité et de caractères pour fermez le chevron gauche, le « et » commercial et autres séparateurs. Vous pouvez utiliser également des références de caractère numérique ; ils sont développés immédiatement une fois qu'ils sont reconnus et ils sont traités en tant que données caractère, afin que vous puissiez utiliser les références de caractère numérique

Si vous déclarons des deux entités suivantes
  • lt
  • amp
vous devez les déclarer comme entités internes dont texte de remplacement est une référence de caractère sur le caractère correspondant (le chevron gauche ou le et commercial) qui est en cours échappement ; L'évitement double est nécessaire pour ces entités afin que les références à les générer un résultat formé correctement.

Si déclarons des entités trois suivantes
  • gt
  • apos
  • quot
vous devez déclarer les entités en internes dont texte de remplacement est le seul caractère d'échappement en cours.

Procédure pour déterminer si un remplacement de caractères spéciaux est obligatoire

Non requis : les fichiers XML dans lequel les données est récupérées à partir d'une base de données

Lorsque vous utilisez le Microsoft .NET Framework, les données sont extraites et stockées dans un DataSet . Lorsque vous écrivez données d'un DataSet dans un fichier XML à l'aide de la méthode WriteXml , les caractères spéciaux qui sont référencés dans la section « Résumé sont remplacés par les références de caractères correspondant, par conséquent, lorsque vous écrivez des fichiers XML et que vous utilisez un DataSet , aucun processus de remplacement spéciale n'est requise.

Requis : un fichier XML avec des caractères spéciaux

Parfois, le fichier XML ou les données XML qui proviennent d'une tierce partie peuvent utiliser ces caractères spéciaux ; dans ce scénario, les données génère les erreurs lorsque vous chargez elle dans un objet XmlDocument ou un objet XmlReader .

L'erreur suivante est générée lorsque le caractère « et commercial » :
Une erreur s'est produite lors de l'analyse entity_name, ligne #, placez #.
où ligne # et placez # représente la position exacte du caractère spécial.

L'erreur suivante se produit lorsqu'un chevron gauche :
Le « < » caractère hexadécimal valeur 0x3C, ne peut pas être inclus dans un nom. Ligne#, position #.
Dans ce message d'erreur, la ligne # et la position # n'indiquent pas l'emplacement où le chevron gauche existe, mais où le deuxième chevron gauche est détectée.

Si le fichier XML contient chevron droit (>), un guillemet droit ('') ou une apostrophe ('), ils sont gérés par le XmlReader et XmlDocument objets car uniquement caractère remplacement est requis pour ces caractères.

Remplacer les caractères spéciaux

Pour remplacer le « et » commercial et les caractères chevron gauche :
  1. Créer le fichier XML.
  2. Créer l'application Visual Basic .NET et insérez le code.

Création du fichier XML

Copiez et collez le code suivant dans le bloc-notes et puis enregistrez le fichier en tant que customers.xml :
<?xml version="1.0" standalone="yes"?>
<Customers>
<Customer>
<CustomerID>BLAUS</CustomerID>
<CompanyName>Blauer See Delikatessen</CompanyName>
<ContactName>Hanna Moos</ContactName>
<Region>test<ing</Region>
</Customer>
<Customer>
<CustomerID>SPLIR</CustomerID>
<CompanyName>Split Rail Beer & Ale</CompanyName>
<ContactName>Art raunschweiger</ContactName>
<Region>WY</Region>
</Customer>
</Customers>
				

Créez projet .NET de Visual Basic

  1. Créer un nouveau Visual Basic .NET Windows application.
  2. Utilisez une opération glisser-déplacer pour déplacer une zone de texte , deux contrôles Button et un DataGrid .
  3. Définir la propriété Multiline de la zone de texte sur True .
  4. Importer les espaces de noms suivants :
    Imports System.Xml
    Imports System.IO
    Imports System.Data.SqlClient
    					
  5. Après la section suivante
    Inherits System.Windows.Forms.Form
    copiez et collez l'exemple de code suivant :
     Dim filepath As String = "C:\customers.xml"
    Private Sub ReplaceSpecialChars(ByVal linenumber As Long)
            Dim strm As StreamReader
            Dim strline As String
            Dim strreplace As String
    
            Dim tempfile As String = "C:\temp.xml"
            Try
                FileCopy(filepath, tempfile)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
            Dim strmwriter As New StreamWriter(filepath)
            strmwriter.AutoFlush = True
    
            strm = New StreamReader(tempfile)
    
    
            Dim i As Long = 0
            While i < linenumber - 1
                strline = strm.ReadLine
                strmwriter.WriteLine(strline)
                i = i + 1
            End While
    
            strline = strm.ReadLine
            Dim lineposition As Int32
            lineposition = InStr(strline, "&")
            If lineposition > 0 Then
                strreplace = "&amp;"
            Else
                lineposition = InStr(2, strline, "<")
                If lineposition > 0 Then
                    strreplace = "<"
                End If
            End If
            strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition + 1)
            strmwriter.WriteLine(strline)
    
            strline = strm.ReadToEnd
            strmwriter.WriteLine(strline)
    
            strm.Close()
            strm = Nothing
    
            strmwriter.Flush()
            strmwriter.Close()
            strmwriter = Nothing
    
        End Sub
    
        Public Function LoadXMLDoc() As XmlDocument
            Dim xdoc As XmlDocument
            Dim lnum As Long
            Dim pos As Long
            Dim Newxml As String
            Try
                xdoc = New XmlDocument()
                xdoc.Load(filepath)
            Catch ex As XmlException
                MessageBox.Show(ex.Message)
                lnum = ex.LineNumber
                ReplaceSpecialChars(lnum)
    
                xdoc = LoadXMLDoc()
    
            End Try
            Return (xdoc)
        End Function
    					
  6. Copier et coller le code suivant dans l'événement Click de Bouton1 :
    Dim xmldoc As New XmlDocument()
            xmldoc = LoadXMLDoc()
            Dim nextnode As XmlNode
            nextnode = xmldoc.FirstChild.NextSibling
            TextBox1.Text = nextnode.OuterXml
    					
  7. Copier et coller le code suivant dans l'événement Click de Bouton2 :
    Dim ds As New DataSet()
            Dim xdoc As New XmlDocument()
            Dim cnNwind As New SqlConnection("Data source=myservername;user id=myuser;Password=mypassword;Initial catalog=Northwind;")
            Dim daCustomers As New SqlDataAdapter("Select customerid,companyname,contactname, region from customers where region='WY'", cnNwind)
            Dim filepath As String
            Try
                daCustomers.Fill(ds, "Customers")
                DataGrid1.DataSource = ds.Tables(0)
                ds.WriteXml("C:\Dataset.xml")
                xdoc.Load("C:\Dataset.xml")
                Dim nextnode As XmlNode
                nextnode = xdoc.FirstChild.NextSibling
                TextBox1.Text = nextnode.OuterXml.ToString
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    					
  8. Modifier le nom du serveur, le nom d'utilisateur et le mot de passe pour vous connecter à votre serveur qui exécute Microsoft SQL Server.
  9. Générez le projet, puis exécutez-le.
  10. Cliquez sur Button1 .

    Les erreurs que vous recevez sont cohérentes avec la description de l'erreur sont décrite dans la section « obligatoire : un XML fichier avec caractères spéciaux ». Les données XML sont ensuite affichées dans la zone de texte ; le « et » commercial est remplacé par
  11. Cliquez sur Button2.

    Dans la grille de données , companyname a un et commercial et la zone de texte affiche les données XML avec

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
251354 Comment faire pour rechercher et remplacer des caractères spéciaux dans un document XML avec Visual Basic

Propriétés

Numéro d'article: 308060 - Dernière mise à jour: mercredi 3 septembre 2003 - Version: 3.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Mots-clés : 
kbmt kbgrpdsmsxml kbhowtomaster kbmsxml KB308060 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 308060
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com