КАК: Поиск и замена специальных символов в XML-файл с Visual Basic .NET

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 308060
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
В данной статье описывается замена специальных символов в файле языка XML (Extensible Markup) с помощью Visual Basic .NET.

back to the top

Описание приема

XML предопределяет следующие пять ссылок на сущности для специальных символов, которые в противном случае интерпретировался бы как часть языка разметки:

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


Ссылки на сущности и символы можно использовать escape-левая угловая скобка, амперсанд и другие разделители. Можно также использовать ссылок на числовые символы; они разворачиваются немедленно в том случае, когда они распознаются и они рассматриваются как символьные данные, чтобы можно было использовать ссылок на числовые символы

При определении любого из следующих двух объектов
  • lt
  • amp
необходимо объявить их как внутренние сущности, текст для замены является символьной ссылки для соответствующих символов (левая угловая скобка или символ амперсанда), избегать; двойные экранирования является обязательным для этих сущностей, таким образом, ссылки на них выдает правильный результат.

При определении любого из следующих трех объектов
  • gt
  • apos
  • Почему
необходимо объявить их как внутренние сущности, замещающего текста используется один символ escape-последовательности.

back to the top

Определить необходимость замены специальных символов

Необязательно: Файлы XML, в которых данные извлекаются из базы данных

При использовании Microsoft платформа.NET Framework данных извлекается и хранятся в наборе данных. При записи данных из набора данных в XML-файл с помощью метода WriteXml , специальные знаки, которые упоминаются в разделе «Аннотация» будут заменены ссылки на соответствующие символы; Таким образом при создании XML-файлов и используется набор данных, процесс замены специальных не является обязательным.

back to the top

Требуется: Файл XML со специальными знаками

Иногда XML-файл или XML-данных, поступающих от сторонних производителей могут использовать эти специальные знаки; в этом случае данные выдает ошибки при его загрузке в объект XmlDocument или объект XmlReader .

Когда встречается символ амперсанда, создается следующее сообщение об ошибке:
Произошла ошибка при синтаксическом анализе entity_name, строки #, должность #.
где строка # и положение # представляют собой точное положение специальный символ.

При обнаружении левая угловая скобка, возникает следующая ошибка:
"<' character,="" hexadecimal="" value="" 0x3c,cannot="" be="" included="" in="" a="" name.=""></'> #, должность #.
В этом сообщении об ошибке строки # и положение # не указывает на положение, где существует левая угловая скобка, но где встречается второй левая угловая скобка.

Если XML-файл содержит правую угловую скобку (&gt;), прямые кавычки ("") или апостроф ('), эти параметры обрабатываются с помощью XmlReader и объектов XmlDocument так, как требуется для этих символов только для замены одного символа.

back to the top

Замена специальных символов

Чтобы заменить амперсанд и левой угловой скобки символов:
  1. Создайте XML-файл.
  2. Создание приложения Visual Basic .NET, а затем код insertthe.
back to the top

Создайте XML-файл

Скопируйте и вставьте следующий код в Блокнот и сохраните файл как 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>				
back to the top

Создание проекта Visual Basic .NET

  1. Создание нового Windowsapplication Visual Basic .NET.
  2. Используйте операцию и перетащите для перемещения DataGrid, TextBoxи два элемента управления Button .
  3. Свойства многострочноготекстового поля значение True.
  4. Импортируйте следующие пространства имен:
    Imports System.XmlImports System.IOImports 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. Скопируйте и вставьте следующий код в событие Clickкнопки Button1.
    Dim xmldoc As New XmlDocument()        xmldoc = LoadXMLDoc()        Dim nextnode As XmlNode        nextnode = xmldoc.FirstChild.NextSibling        TextBox1.Text = nextnode.OuterXml					
  7. Скопируйте и вставьте следующий код в событие Click для 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. Измените имя сервера, имя пользователя и пароль toconnect к серверу, на котором выполняется Microsoft SQL Server.
  9. Выполните построение проекта и запустите его.
  10. Нажмите кнопку Button1.

    Ошибки, полученные согласованы с thedescription ошибки, которые описаны в "требуется: XML-файла withSpecial знаки" раздел. Данные XML отображается в текстовом поле; амперсанд заменяется
  11. Нажмите кнопку Button2.

    DataGridcompanyname имеет знак, а текстовое поле отображает XML-данные с
back to the top
Ссылки
Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
251354 КАК: Поиск и замена специальных символов в документ XML с Visual Basic
back to the top

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 308060 — последний просмотр: 12/06/2015 05:42:45 — редакция: 6.0

Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.0

  • kbnosurvey kbarchive kbgrpdsmsxml kbhowtomaster kbmsxml kbmt KB308060 KbMtru
Отзывы и предложения