ΔΙΑΔΙΚΑΣΙΕΣ: Να εντοπίσετε και να αντικαταστήσετε ειδικούς χαρακτήρες σε ένα αρχείο XML με τη Visual Basic .NET

Για την Microsoft Visual C# .NET έκδοση αυτού του άρθρου, ανατρέξτε στην ενότητα
316063 .
Για μια έκδοση του Microsoft Visual Basic 6.0 αυτού του άρθρου, ανατρέξτε στην ενότητα
251354 .

Σύνοψη

Αυτό το άρθρο περιγράφει τον τρόπο για να αντικαταστήσετε ειδικούς χαρακτήρες σε ένα αρχείο Extensible Markup Language (XML), χρησιμοποιώντας τη Visual Basic .NET.

Περιγραφή για την τεχνική

XML predefines στις παρακάτω πέντε αναφορές οντότητας για ειδικούς χαρακτήρες που διαφορετικά θα ερμηνευτεί ως τμήμα της γλώσσας σήμανσης:




Μπορείτε να χρησιμοποιήσετε αναφορές οντότητας και χαρακτήρα διαφυγή την αριστερή αγκύλη με γωνία, το εμπορικό "και" και άλλοι οριοθέτες. Μπορείτε επίσης να χρησιμοποιήσετε αναφορές αριθμητικών χαρακτήρων; αναπτύσσονται αμέσως μόλις αυτά αναγνωρίζονται και αντιμετωπίζονται ως δεδομένα χαρακτήρων, ώστε να μπορείτε να χρησιμοποιήσετε τις αναφορές αριθμητικών χαρακτήρων


Εάν η δήλωση οποιαδήποτε από τις ακόλουθες δύο οντότητες
  • lt
  • amp
πρέπει να δηλώσετε τους ως εσωτερικό οντότητες των οποίων το κείμενο αντικατάστασης είναι μια αναφορά χαρακτήρα στο αντίστοιχο χαρακτήρα (η αριστερή αγκύλη με γωνία ή το εμπορικό "και") που είναι υπό διαφυγής διπλή διαφυγή είναι απαραίτητη για αυτές τις οντότητες, έτσι ώστε οι αναφορές σε αυτά παράγουν ένα καλοσχεδιασμένο αποτέλεσμα.

Εάν η δήλωση οποιαδήποτε από τις ακόλουθες τρεις οντότητες
  • gt
  • κλειδί μητρώου
  • quot
πρέπει να δηλώσετε τους ως εσωτερικός οντότητες των οποίων το κείμενο αντικατάστασης είναι το μονό χαρακτήρα που διαφυγής.

Εξακριβώστε αν απαιτείται ένα ειδικό χαρακτήρα αντικατάστασης

Δεν απαιτείται: Αρχεία XML στο οποίο τα δεδομένα ανακτώνται από μια βάση δεδομένων

Όταν χρησιμοποιείτε το Microsoft .NET Framework, τα δεδομένα ανακτώνται και αποθηκεύονται σε ένα σύνολο δεδομένων. Όταν γράφετε δεδομένα από ένα σύνολο δεδομένων σε ένα αρχείο XML, χρησιμοποιώντας τη μέθοδο WriteXml , οι ειδικοί χαρακτήρες που αναφέρονται στην ενότητα "Σύνοψη" αντικαθίστανται από τις αναφορές αντίστοιχο χαρακτήρα; Επομένως, όταν γράφετε αρχεία XML και χρησιμοποιείτε ένα DataSet, απαιτείται καμία διαδικασία ειδικής αντικατάστασης.

Απαιτείται: Ένα αρχείο XML με ειδικούς χαρακτήρες

Μερικές φορές αυτοί οι ειδικοί χαρακτήρες, ενδέχεται να χρησιμοποιήσετε το αρχείο XML ή τα δεδομένα XML που προέρχονται από τρίτους σε αυτό το σενάριο, τα δεδομένα δημιουργεί σφάλματα, όταν φορτώνετε σε μια XmlDocument ή αντικειμένου XmlReader .

Όταν ο χαρακτήρας εμπορικού "και" σφάλμα, δημιουργείται το ακόλουθο μήνυμα λάθους:
Παρουσιάστηκε σφάλμα κατά την ανάλυση του entity_name, γραμμή
#, τοποθετήστε #.
γραμμή όπου # και θέση
# αντιπροσωπεύουν την ακριβή θέση του ειδικού χαρακτήρα.

Το ακόλουθο μήνυμα λάθους παρουσιάζεται όταν μια αριστερή αγκύλη με γωνία:
Το ' <' χαρακτήρα, δεκαεξαδική τιμή 0x3C, δεν μπορούν να συμπεριληφθούν σε ένα όνομα. Γραμμή #, θέση
#.
Σε αυτό το μήνυμα λάθους, η γραμμή
# και θέση # δεν υποδηλώνουν τη θέση όπου υπάρχει η αριστερή αγκύλη με γωνία, αλλά όπου συναντάται η δεύτερη αριστερή αγκύλη με γωνία.

Εάν το αρχείο XML περιέχει μια δεξιά αγκύλη (>), ευθεία εισαγωγικά ('') ή μια απόστροφο ('), αυτά τα χειρίζεται το XmlReader και το XmlDocument αντικείμενα επειδή απαιτείται μόνο το μεμονωμένο χαρακτήρα αντικατάστασης για αυτούς τους χαρακτήρες.

Αντικαταστήστε τους ειδικούς χαρακτήρες

Για να αντικαταστήσετε το σύμβολο και τους χαρακτήρες αριστερή αγκύλη με γωνία:
  1. Δημιουργήστε το αρχείο XML.
  2. Δημιουργία της εφαρμογής της Visual Basic .NET και, στη συνέχεια, εισαγάγετε τον κωδικό.

Δημιουργία του αρχείου XML

Αντιγράψτε και επικολλήστε τον παρακάτω κώδικα στο Σημειωματάριο (Notepad) και, στη συνέχεια, αποθηκεύστε το αρχείο ως 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>

Δημιουργήστε το έργο της Visual Basic .NET

  1. Δημιουργία νέας εφαρμογής Windows .NET Visual Basic.
  2. Χρησιμοποιήστε μια λειτουργία μεταφοράς και απόθεσης για να μετακινήσετε ένα πλαίσιο κειμένου, δύο στοιχεία ελέγχου κουμπί και ένα DataGrid.
  3. Ορίστε την ιδιότητα του πλαισίου κειμένου πολλών γραμμών στην τιμή True.
  4. Εισαγάγετε τα παρακάτω πεδία ονομάτων:
    Imports System.XmlImports System.IO
    Imports System.Data.SqlClient

  5. Μετά την παρακάτω ενότητα
    Inherits System.Windows.Forms.Form
    Αντιγράψτε και επικολλήστε το ακόλουθο δείγμα κώδικα:
     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. Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στο συμβάν κάντε κλικ στο κουμπί του Button1:
    Dim xmldoc As New XmlDocument()        xmldoc = LoadXMLDoc()
    Dim nextnode As XmlNode
    nextnode = xmldoc.FirstChild.NextSibling
    TextBox1.Text = nextnode.OuterXml

  7. Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στο συμβάν κάντε κλικ στο κουμπί του 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. Για να αλλάξετε το όνομα του διακομιστή, το όνομα χρήστη και τον κωδικό πρόσβασης για να συνδεθείτε με το διακομιστή που εκτελεί τον Microsoft SQL Server.
  9. Δημιουργήστε το έργο και, στη συνέχεια, να το εκτελέσετε.
  10. Κάντε κλικ στο κουμπί Button1.

    Τα σφάλματα που λαμβάνετε είναι συνεπείς με την περιγραφή από τα μηνύματα λάθους που περιγράφονται στην ενότητα "Απαιτείται: ένα XML αρχείο με ειδικούς χαρακτήρες". Στη συνέχεια εμφανίζονται τα δεδομένα XML στο πλαίσιο κειμένου; το εμπορικό "και" αντικαθίσταται με
  11. Κάντε κλικ στο κουμπί Button2.

    Μέσα στο DataGrid companyname έχει σύμβολο και το πλαίσιο κειμένου εμφανίζει τα δεδομένα XML με

Αναφορές

Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
251354 ΔΙΑΔΙΚΑΣΙΕΣ: εντοπίσετε και να αντικαταστήσετε ειδικούς χαρακτήρες σε ένα έγγραφο XML με τη Visual Basic
Ιδιότητες

Αναγνωριστικό άρθρου: 308060 - Τελευταία αναθεώρηση: 21 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια