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 |
< |
< |
&#60; |
| Right angle bracket |
> |
> |
> |
| Straight quotation mark |
" |
" |
' |
| Apostrophe |
' |
' |
" |
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
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
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 (>), 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:
- Vytvořte soubor XML.
- 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
- Vytvoření nového jazyka Visual Basic.SÍŤ Windows
aplikace.
- Pomocí operace přetažení a přesun Textové poledva Tlačítko Ovládací prvky a Objekt DataGrid.
- Nastavit Víceřádková sleva Vlastnost Textové pole k PRAVDA.
- Importujte následující obory:
Imports System.Xml
Imports System.IO
Imports System.Data.SqlClient
- 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 = "&"
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
- 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
- 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
- Změnit název serveru, uživatelské jméno a heslo
připojení k serveru se spuštěnou službou Microsoft SQL Server.
- Vytvořte projekt a spusťte jej.
- 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. - Klepněte na tlačítko Button2.
V Objekt DataGrid, Firma obsahuje ampersand a Textové pole Zobrazuje data XML s
Další informace získáte klepnutím na číslo článku níže
zobrazení článku znalostní báze Microsoft Knowledge Base:
251354
(http://support.microsoft.com/kb/251354/EN-US/
)
JAK: Vyhledání a nahrazení zvláštních znaků v dokumentu XML pomocí jazyka Visual Basic
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
| kbgrpdsmsxml kbhowtomaster kbmsxml kbmt KB308060 KbMtcs |
Strojově přeložený článekDů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
(http://support.microsoft.com/kb/308060/en-us/
)