Procedura: Individuare e sostituire caratteri speciali in un file XML con Visual Basic .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 308060 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene descritto come sostituire caratteri speciali in un file XML (Extensible Markup Language) utilizzando Visual Basic. NET.

Descrizione della tecnica

XML fornisce predefiniti i seguenti cinque riferimenti di entitÓ per caratteri speciali, in caso contrario, verrebbe interpretati come parte del linguaggio di markup:

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;


╚ possibile utilizzare riferimenti di entitÓ e carattere per la parentesi angolare sinistra, la e commerciale e altri delimitatori di escape. Inoltre Ŕ possibile utilizzare riferimenti a caratteri numerici in quanto vengono espanse immediatamente quando sono riconosciuti e vengono considerati come dati di tipo carattere, in modo da poter utilizzare i riferimenti a caratteri numerici

Se la dichiarazione di uno dei seguenti due entitÓ
  • lt
  • amp
Ŕ necessario dichiararli come entitÓ interne con testo di sostituzione Ŕ un riferimento carattere il carattere corrispondente (la parentesi angolare sinistra o la e commerciale) che Ŕ sequenza di escape; l'escape double Ŕ necessaria per queste entitÓ in modo che i riferimenti a essi producono un risultato corretto.

Se la dichiarazione di uno dei seguenti tre entitÓ
  • gt
  • apos
  • quot
Ŕ necessario dichiararli come interne entitÓ cui testo di sostituzione Ŕ la singola sequenza di escape di caratteri.

Stabilire se Ŕ richiesta una sostituzione di caratteri speciali

Non Ŕ necessario: File XML in cui sono recuperare i dati da un database

Quando si utilizza Microsoft .NET Framework, i dati sono recuperati e memorizzati in un DataSet . Quando si scrive dati da un DataSet in un file XML utilizzando il metodo WriteXml , i caratteri speciali vengono definiti nella sezione "Sommario" sono sostituiti con i riferimenti corrispondenti caratteri; di conseguenza, quando si scrivono file XML e si utilizza un DataSet , nessun processo di sostituzione speciali Ŕ richiesto.

Richiesto: Un file XML con caratteri speciali

In alcuni casi il file XML o i dati XML proveniente da una terza parte la possono utilizzare questi caratteri speciali, in questo scenario, i dati generati errori quando si carica in un oggetto XmlDocument o in un oggetto XmlReader .

Il seguente errore viene generato quando viene rilevato il carattere e commerciale:
Errore durante l' analisi entity_name, riga #, posizionare #.
in cui la riga # e posizionare # rappresentano l'esatta posizione del carattere speciale.

Quando viene rilevata una parentesi angolare sinistra, si verifica il seguente errore:
Il ' < ' carattere esadecimale 0x3C di valore, non pu˛ essere utilizzato in un nome. Riga#, position #.
Nel messaggio di errore, la riga # e la posizione # non indicano la posizione in cui esiste la parentesi angolare sinistra, ma in cui viene rilevata la seconda parentesi angolare sinistra.

Il file XML contiene una parentesi angolare destra di (>), segno di virgolette semplici ("") o un apostrofo ('), questi vengono gestiti dal XmlReader e XmlDocument oggetti poichÚ solo il carattere sostituzione Ŕ necessaria per tali caratteri.

Sostituire i caratteri speciali

Per sostituire la e commerciale e i caratteri di parentesi angolare sinistra:
  1. Creazione del file XML.
  2. Creare l'applicazione di Visual Basic .NET e quindi inserire il codice.

Creazione del file XML

Copiare e incollare il codice riportato di seguito nel blocco note e quindi salvare il file come 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>
				

Creazione progetto di Visual Basic .NET

  1. Creare una nuova Applicazione Windows in Visual Basic .NET.
  2. Utilizzare un'operazione di trascinamento e rilascio per spostare un controllo TextBox , due controlli Button e un DataGrid .
  3. Impostare la proprietÓ di MultiLine del controllo TextBox su true .
  4. Importare gli spazi dei nomi seguente:
    Imports System.Xml
    Imports System.IO
    Imports System.Data.SqlClient
    					
  5. Dopo la sezione seguente
    Inherits System.Windows.Forms.Form
    copiare e incollare il seguente codice di esempio:
     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. Copiare e incollare il codice riportato di seguito nell'evento Click di Button1 :
    Dim xmldoc As New XmlDocument()
            xmldoc = LoadXMLDoc()
            Dim nextnode As XmlNode
            nextnode = xmldoc.FirstChild.NextSibling
            TextBox1.Text = nextnode.OuterXml
    					
  7. Copiare e incollare il codice riportato di seguito nell'evento Click di Button2 :
    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. Modificare il nome del server, il nome utente e la password per connettersi al server che esegue Microsoft SQL Server.
  9. Generare il progetto ed eseguirla.
  10. Fare clic su Button1 .

    Gli errori che viene visualizzato sono coerenti con la descrizione degli errori che sono descritti nella sezione "Richiesta: an XML file con caratteri speciali". I dati XML viene quindi visualizzati nella TextBox ; la e commerciale viene sostituita con
  11. Fare clic su Button2.

    Nel DataGrid , companyname ha una e commerciale e TextBox Mostra i dati XML con

Riferimenti

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
251354Procedura: Individuare e sostituire caratteri speciali in un documento XML con Visual Basic

ProprietÓ

Identificativo articolo: 308060 - Ultima modifica: mercoledý 3 settembre 2003 - Revisione: 3.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Chiavi:á
kbmt kbgrpdsmsxml kbhowtomaster kbmsxml KB308060 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 308060
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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