JAK: Vyhledání a nahrazení speciálních znaků v souboru XML pomocí jazyka Visual Basic.NET

Překlady článku Překlady článku
ID článku: 308060 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje, jak nahradit zvláštní znaky v soubor Extensible Markup Language (XML) pomocí jazyka Visual Basic .NET.

Popis techniky

XML predefines následující odkazy na pět entity pro speciální znaky, které by jinak měly být interpretovány jako součást markup language:

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;


Můžete odkazy na entity a znak escape levá úhlová závorka ampersand a jiné oddělovače. Můžete také použít číselný znak odkazy; jsou rozbaleny ihned, jakmile budou rozpoznány a jsou považovány za znaková data, takže můžete použít alfanumerické znakové odkazy

Je-li některou z následujících dvou entit deklarujete
  • lt
  • amp
je nutné deklarovat jako vnitřní subjekty, jejichž výměna text je znak odkaz na příslušné znakové (levý úhel závorka nebo ampersand), je právě uvozeny; Dvojitá úniku je požadované pro tyto subjekty tak, aby odkazy na ně vyrábět ve správném formátu výsledek.

Pokud některý z následujících tří subjektů deklarujete
  • gt
  • APOS
  • quot
je nutné deklarovat jako vnitřní subjekty, jejichž výměna text je uvozena právě jeden znak.

Zjistěte, zda je požadována zvláštní znak nahrazení

Není požadováno: Soubory XML v nichž jsou Data načtena z databáze

Při použití aplikace Microsoft.NET Framework data je načtena a uložena v Objekt DataSet. Při psaní dat z Objekt DataSet do souboru XML pomocí WriteXml Metoda, speciální znaky, které jsou uvedené v V části "Souhrn" jsou nahrazeny odkazy příslušných znaků; proto při psaní souborů XML a používáte Objekt DataSet, je vyžadován žádný zvláštní náhradní proces.

Požadováno: Soubor XML s speciální znaky

Někdy souboru XML nebo data XML, která pocházejí třetí strany mohou používat tyto speciální znaky; v tomto scénáři data generuje chyby při načítání do XmlDocument objekt nebo XmlReader objekt.

Následující chybová zpráva je generována při je-li zjištěna znak:
Došlo k chybě Při analýze entity_name, řádek #, pozice #.
kde řádky # a umístění # představují zvláštní přesné umístění znak.

Došlo k následující chybě dochází, pokud levá úhlová závorka zjistil:
"<' character,="" hexadecimal="" value="" 0x3c,cannot="" be="" included="" in="" a="" name.=""></'> #, pozice #.
V této chybové zprávě, řádek # a umístění # Ne Označit pozici, kde levá úhlová závorka existuje, ale kde druhý je-li zjištěna levá úhlová závorka.

Pokud soubor XML obsahuje právo úhlová závorka (&gt;), rovné uvozovky (") nebo apostrof ('), tyto jsou zpracována XmlReader a XmlDocument objekty, protože je třeba pouze jeden znak nahrazení Tyto znaky.

Nahrazení zvláštních znaků

Nahrazení ampersand a znaky levá úhlová závorka:
  1. Vytvořte soubor XML.
  2. Vytvoření aplikace Visual Basic.NET aplikací a potom vložte kód.

Vytvořit soubor XML

Zkopírujte a vložte následující kód do programu Poznámkový blok a uložte soubor jako 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>
				

Vytvořte jazyka Visual Basic.NET projektu

  1. Vytvoření nového jazyka Visual Basic.SÍŤ Windows aplikace.
  2. Pomocí operace přetažení a přesun Textové poledva Tlačítko Ovládací prvky a Objekt DataGrid.
  3. Nastavit Víceřádková sleva Vlastnost Textové pole k PRAVDA.
  4. Importujte následující obory:
    Imports System.Xml
    Imports System.IO
    Imports System.Data.SqlClient
    					
  5. Po následující část
    Inherits System.Windows.Forms.Form
    Zkopírujte a vložte následující příklad kódu:
     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. Zkopírujte a vložte následující kód do Klepněte na tlačítko události Button1:
    Dim xmldoc As New XmlDocument()
            xmldoc = LoadXMLDoc()
            Dim nextnode As XmlNode
            nextnode = xmldoc.FirstChild.NextSibling
            TextBox1.Text = nextnode.OuterXml
    					
  7. Zkopírujte a vložte následující kód do Klepněte na tlačítko události 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. Změnit název serveru, uživatelské jméno a heslo připojení k serveru se spuštěnou službou Microsoft SQL Server.
  9. Vytvořte projekt a spusťte jej.
  10. Klepněte na tlačítko Button1.

    Jsou v souladu s chybami, které obdržíte Popis chyb, které jsou vysvětleny v "požadováno: soubor XML s Speciální znaky"části. XML data se zobrazí v Textové pole; ampersand je nahrazen.
  11. Klepněte na tlačítko Button2.

    V Objekt DataGrid, Firma obsahuje ampersand a Textové pole Zobrazuje data XML s

Odkazy

Další informace získáte klepnutím na číslo článku níže zobrazení článku znalostní báze Microsoft Knowledge Base:
251354 JAK: Vyhledání a nahrazení zvláštních znaků v dokumentu XML pomocí jazyka Visual Basic

Vlastnosti

ID článku: 308060 - Poslední aktualizace: 18. května 2011 - Revize: 5.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Klíčová slova: 
kbgrpdsmsxml kbhowtomaster kbmsxml kbmt KB308060 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:308060

Dejte nám zpětnou vazbu

 

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