XmlTextWriter Класс

Определение

Представляет модуль записи, предоставляющий быстрый, не кэшированный, только для создания потоков или файлов, содержащих XML-данные, соответствующие расширяемой разметке W3C (XML) 1.0 и пространства имен в рекомендациях XML.

Вместо этого рекомендуется использовать XmlWriter класс.

public ref class XmlTextWriter : System::Xml::XmlWriter
public class XmlTextWriter : System.Xml.XmlWriter
type XmlTextWriter = class
    inherit XmlWriter
Public Class XmlTextWriter
Inherits XmlWriter
Наследование
XmlTextWriter

Комментарии

Класс XmlTextWriter реализует XmlWriter класс.

Замечание

Рекомендуется создавать XmlWriter экземпляры с помощью XmlWriter.Create метода и XmlWriterSettings класса, чтобы воспользоваться преимуществами новых функций.

XmlTextWriter поддерживает стек пространства имен, соответствующий всем пространствам имен, определенным в текущем стеке элементов. С помощью XmlTextWriter можно вручную объявить пространства имен.

w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x", null, "urn:1");
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteEndElement();

Этот код C# создает следующие выходные данные. XmlTextWriter содействует перемещению объявления пространства имен к корневому элементу, чтобы избежать его дублирования в двух дочерних элементах. Дочерние элементы извлекают префикс из определения пространства имен.

<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</root>

XmlTextWriter также позволяет переопределить текущее объявление пространства имен. В следующем примере URI пространства имен "123" переопределяется параметром abc для создания XML-элемента <x:node xmlns:x="abc"/>.

w.WriteStartElement("x","node","123");
w.WriteAttributeString("xmlns","x",null,"abc");

Используя методы записи, которые принимают префикс в качестве аргумента, можно также указать, какой префикс следует использовать. В следующем примере два разных префикса сопоставляются с одинаковым универсальным кодом ресурса (URI) пространства имен для создания XML-текста <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>.

XmlTextWriter w = new XmlTextWriter(Console.Out);
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
w.Close();

Если существует несколько объявлений пространства имен, сопоставляемых различными префиксами к одному и тому же URI пространства имен, XmlTextWriter проходит стек объявлений пространства имен в обратном порядке и выбирает наиболее близкое.

XmlTextWriter w = new XmlTextWriter(Console.Out);
w.Formatting = Formatting.Indented;
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteAttributeString("attr","urn:1","123");
w.WriteEndElement();
w.WriteEndElement();
w.Close();

В этом примере C#, так как WriteAttributeString вызов не указывает префикс, средство записи использует последний префикс, отправленный в стек пространства имен, и создает следующий XML-код:

<x:root xmlns:x="urn:1">
<y:item y:attr="123" xmlns:y="urn:1" />
</x:root>

Если возникают конфликты пространства имен, их разрешается путем XmlTextWriter создания альтернативных префиксов. Например, если атрибут и элемент имеют один и тот же префикс, но разные пространства имен, XmlWriter создается альтернативный префикс для атрибута. Созданные префиксы именуются n{i}, где i — это число, начинающееся с 1. Для каждого элемента число сбрасывается до 1.

Атрибуты, связанные с URI пространства имен, должны иметь префикс (пространства имен по умолчанию не применяются к атрибутам). Это соответствует разделу 5.2 пространства имен W3C в рекомендации XML. Если атрибут ссылается на универсальный код ресурса (URI) пространства имен, но не указывает префикс, записывающий модуль создаёт префикс для атрибута.

При написании пустого элемента добавляется дополнительное пространство между именем тега и закрывающим тегом, например <item />. Это обеспечивает совместимость со старыми браузерами.

Когда String используется как параметр метода, null и String.Empty эквивалентны. String.Empty следует правилам W3C.

Чтобы записать строго типизированные данные, используйте XmlConvert класс для преобразования типов данных в строку. Например, следующий код C# преобразует данные из DoubleString и записывает элемент <price>19.95</price>.

Double price = 19.95;
writer.WriteElementString("price", XmlConvert.ToString(price));

XmlTextWriter Не проверяет наличие следующих элементов:

  • Недопустимые символы в именах атрибутов и элементов.
  • Символы Юникода, которые не соответствуют заданной кодировке. Если символы Юникода не соответствуют заданной кодировке, тег XmlTextWriter не преобразовывает символы Юникода в символьные сущности.
  • Повторяющиеся атрибуты.
  • Символы в общедоступном идентификаторе DOCTYPE или системном идентификаторе.

Вопросы безопасности

Следующие элементы следует учитывать при работе с классом XmlTextWriter .

  • Исключения, возникающие в результате работы XmlTextWriter, могут раскрывать сведения о пути, которые нежелательны для приложения. Приложения должны перехватывать исключения и обрабатывать их соответствующим образом.

  • При передаче XmlTextWriter другому приложению базовый поток становится доступен этому приложению. Если необходимо передать XmlTextWriter в полунадежное приложение, вместо этого следует использовать объект XmlWriter, созданный методом Create.

  • Данные, передаваемые в методы XmlTextWriter или WriteDocType, не проверяются WriteRaw. Не следует передавать произвольные данные этим методам.

  • Если параметры по умолчанию изменены, нет гарантии того, что созданные выходные данные являются хорошо сформированными XML-данными.

  • Не принимать вспомогательные компоненты, такие как Encoding объект, из ненадежного источника.

Конструкторы

Имя Описание
XmlTextWriter(Stream, Encoding)

Создает экземпляр класса с помощью указанного XmlTextWriter потока и кодирования.

XmlTextWriter(String, Encoding)

Создает экземпляр класса с помощью указанного XmlTextWriter файла.

XmlTextWriter(TextWriter)

Создает экземпляр класса с помощью указанного XmlTextWriterTextWriter.

Свойства

Имя Описание
BaseStream

Возвращает базовый объект потока.

Formatting

Указывает, как форматируются выходные данные.

Indentation

Возвращает или задает количество операций записи IndentChars для каждого уровня в иерархии, если Formatting задано значение Formatting.Indented.

IndentChar

Возвращает или задает символ, используемый для отступа, если Formatting задано Formatting.Indentedзначение .

Namespaces

Возвращает или задает значение, указывающее, следует ли поддерживать пространство имен.

QuoteChar

Возвращает или задает символ, используемый для кавычки значений атрибутов.

Settings

Возвращает объект, используемый XmlWriterSettings для создания этого XmlWriter экземпляра.

(Унаследовано от XmlWriter)
WriteState

Возвращает состояние модуля записи.

XmlLang

Возвращает текущую xml:lang область.

XmlSpace

Возвращает представление текущей XmlSpacexml:space области.

Методы

Имя Описание
Close()

Закрывает этот поток и базовый поток.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса XmlWriter.

(Унаследовано от XmlWriter)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые XmlWriter и при необходимости освобождает управляемые ресурсы.

(Унаследовано от XmlWriter)
DisposeAsync()

Выполняет определяемые приложением задачи, связанные с освобождением, освобождением или асинхронным сбросом неуправляемых ресурсов.

(Унаследовано от XmlWriter)
DisposeAsyncCore()

Выполняет определяемые приложением задачи, связанные с освобождением, освобождением или асинхронным сбросом управляемых ресурсов.

(Унаследовано от XmlWriter)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Flush()

Очищает все, что находится в буфере в базовых потоках, а также очищает базовый поток.

FlushAsync()

Асинхронно очищает все, что находится в буфере в базовых потоках, а также очищает базовый поток.

(Унаследовано от XmlWriter)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
LookupPrefix(String)

Возвращает ближайший префикс, определенный в текущей области пространства имен для URI пространства имен.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
WriteAttributes(XmlReader, Boolean)

При переопределении в производном классе записывает все атрибуты, найденные в текущей позиции в производном XmlReaderклассе.

(Унаследовано от XmlWriter)
WriteAttributesAsync(XmlReader, Boolean)

Асинхронно записывает все атрибуты, найденные в текущей позиции в .XmlReader

(Унаследовано от XmlWriter)
WriteAttributeString(String, String, String, String)

При переопределении в производном классе записывает атрибут с указанным префиксом, локальным именем, URI пространства имен и значением.

(Унаследовано от XmlWriter)
WriteAttributeString(String, String, String)

При переопределении в производном классе записывает атрибут с указанным локальным именем, URI пространства имен и значением.

(Унаследовано от XmlWriter)
WriteAttributeString(String, String)

При переопределении в производном классе записывает атрибут с указанным локальным именем и значением.

(Унаследовано от XmlWriter)
WriteAttributeStringAsync(String, String, String, String)

Асинхронно записывает атрибут с указанным префиксом, локальным именем, URI пространства имен и значением.

(Унаследовано от XmlWriter)
WriteBase64(Byte[], Int32, Int32)

Кодирует указанные двоичные байты как base64 и записывает полученный текст.

WriteBase64Async(Byte[], Int32, Int32)

Асинхронно кодирует указанные двоичные байты как Base64 и записывает полученный текст.

(Унаследовано от XmlWriter)
WriteBinHex(Byte[], Int32, Int32)

Кодирует указанные двоичные байты в виде binhex и записывает полученный текст.

WriteBinHexAsync(Byte[], Int32, Int32)

Асинхронно кодирует указанные двоичные байты как BinHex и записывает полученный текст.

(Унаследовано от XmlWriter)
WriteCData(String)

<Записывает ![ CDATA[...]]> блок, содержащий указанный текст.

WriteCDataAsync(String)

Асинхронно записывает <![ CDATA[...]]> блок, содержащий указанный текст.

(Унаследовано от XmlWriter)
WriteCharEntity(Char)

Принудительно создает сущность символа для указанного значения символа Юникода.

WriteCharEntityAsync(Char)

Асинхронно заставляет создание сущности символа для указанного значения символа Юникода.

(Унаследовано от XmlWriter)
WriteChars(Char[], Int32, Int32)

Записывает текст по одному буферу за раз.

WriteCharsAsync(Char[], Int32, Int32)

Асинхронно записывает текст в один буфер за раз.

(Унаследовано от XmlWriter)
WriteComment(String)

Записывает комментарий <--...--> , содержащий указанный текст.

WriteCommentAsync(String)

Асинхронно записывает <комментарий, --...--> содержащий указанный текст.

(Унаследовано от XmlWriter)
WriteDocType(String, String, String, String)

Записывает объявление DOCTYPE с указанным именем и необязательными атрибутами.

WriteDocTypeAsync(String, String, String, String)

Асинхронно записывает объявление DOCTYPE с указанным именем и необязательными атрибутами.

(Унаследовано от XmlWriter)
WriteElementString(String, String, String, String)

Записывает элемент с указанным префиксом, локальным именем, URI пространства имен и значением.

(Унаследовано от XmlWriter)
WriteElementString(String, String, String)

Записывает элемент с указанным локальным именем, URI пространства имен и значением.

(Унаследовано от XmlWriter)
WriteElementString(String, String)

Записывает элемент с указанным локальным именем и значением.

(Унаследовано от XmlWriter)
WriteElementStringAsync(String, String, String, String)

Асинхронно записывает элемент с указанным префиксом, локальным именем, URI пространства имен и значением.

(Унаследовано от XmlWriter)
WriteEndAttribute()

Закрывает предыдущий WriteStartAttribute(String, String, String) вызов.

WriteEndAttributeAsync()

Асинхронно закрывает предыдущий WriteStartAttribute(String, String) вызов.

(Унаследовано от XmlWriter)
WriteEndDocument()

Закрывает все открытые элементы или атрибуты и помещает модуль записи в состояние "Пуск".

WriteEndDocumentAsync()

Асинхронно закрывает все открытые элементы или атрибуты и помещает модуль записи в состояние "Пуск".

(Унаследовано от XmlWriter)
WriteEndElement()

Закрывает один элемент и выводит соответствующую область пространства имен.

WriteEndElementAsync()

Асинхронно закрывает один элемент и выводит соответствующую область пространства имен.

(Унаследовано от XmlWriter)
WriteEntityRef(String)

Записывает ссылку на сущность как &name;.

WriteEntityRefAsync(String)

Асинхронно записывает ссылку на сущность как &name;.

(Унаследовано от XmlWriter)
WriteFullEndElement()

Закрывает один элемент и выводит соответствующую область пространства имен.

WriteFullEndElementAsync()

Асинхронно закрывает один элемент и выводит соответствующую область пространства имен.

(Унаследовано от XmlWriter)
WriteName(String)

Записывает указанное имя, гарантируя, что это допустимое имя в соответствии с рекомендацией W3C XML 1.0.

WriteNameAsync(String)

Асинхронно записывает указанное имя, гарантируя, что это допустимое имя в соответствии с рекомендацией W3C XML 1.0 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name).

(Унаследовано от XmlWriter)
WriteNmToken(String)

Записывает указанное имя, гарантируя, что он является допустимым NmToken в соответствии с рекомендацией W3C XML 1.0.

WriteNmTokenAsync(String)

Асинхронно записывает указанное имя, гарантируя, что он является допустимым NmToken в соответствии с рекомендацией W3C XML 1.0 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name).

(Унаследовано от XmlWriter)
WriteNode(XmlReader, Boolean)

При переопределении в производном классе копирует все данные от читателя к средству записи и перемещает читателя в начало следующего брата.

(Унаследовано от XmlWriter)
WriteNode(XPathNavigator, Boolean)

Копирует все данные из XPathNavigator объекта в модуль записи. Положение XPathNavigator осталось неизменным.

(Унаследовано от XmlWriter)
WriteNodeAsync(XmlReader, Boolean)

Асинхронно копирует все данные от средства чтения к записи и перемещает читателя в начало следующего брата.

(Унаследовано от XmlWriter)
WriteNodeAsync(XPathNavigator, Boolean)

Асинхронно копирует все данные из XPathNavigator объекта в модуль записи. Положение XPathNavigator осталось неизменным.

(Унаследовано от XmlWriter)
WriteProcessingInstruction(String, String)

Записывает инструкцию обработки с пробелом между именем и текстом следующим образом: <?name text?>.

WriteProcessingInstructionAsync(String, String)

Асинхронно записывает инструкцию обработки с пробелом между именем и текстом следующим образом: <?name text?>.

(Унаследовано от XmlWriter)
WriteQualifiedName(String, String)

Записывает полное имя пространства имен. Этот метод ищет префикс, который находится в области для заданного пространства имен.

WriteQualifiedNameAsync(String, String)

Асинхронно записывает полное имя пространства имен. Этот метод ищет префикс, который находится в области для заданного пространства имен.

(Унаследовано от XmlWriter)
WriteRaw(Char[], Int32, Int32)

Записывает необработанную разметку вручную из буфера символов.

WriteRaw(String)

Записывает необработанную разметку вручную из строки.

WriteRawAsync(Char[], Int32, Int32)

Асинхронно записывает необработанную разметку вручную из буфера символов.

(Унаследовано от XmlWriter)
WriteRawAsync(String)

Асинхронно записывает необработанную разметку вручную из строки.

(Унаследовано от XmlWriter)
WriteStartAttribute(String, String, String)

Записывает начало атрибута.

WriteStartAttribute(String, String)

Записывает начало атрибута с указанным локальным именем и URI пространства имен.

(Унаследовано от XmlWriter)
WriteStartAttribute(String)

Записывает начало атрибута с указанным локальным именем.

(Унаследовано от XmlWriter)
WriteStartAttributeAsync(String, String, String)

Асинхронно записывает начало атрибута с указанным префиксом, локальным именем и URI пространства имен.

(Унаследовано от XmlWriter)
WriteStartDocument()

Записывает XML-объявление с версией "1.0".

WriteStartDocument(Boolean)

Записывает XML-объявление с версией "1.0" и автономным атрибутом.

WriteStartDocumentAsync()

Асинхронно записывает xml-объявление с версией 1.0.

(Унаследовано от XmlWriter)
WriteStartDocumentAsync(Boolean)

Асинхронно записывает объявление XML с версией "1.0" и автономным атрибутом.

(Унаследовано от XmlWriter)
WriteStartElement(String, String, String)

Записывает указанный тег запуска и связывает его с заданным пространством имен и префиксом.

WriteStartElement(String, String)

При переопределении в производном классе записывает указанный тег запуска и связывает его с заданным пространством имен.

(Унаследовано от XmlWriter)
WriteStartElement(String)

При переопределении в производном классе записывает начальный тег с указанным локальным именем.

(Унаследовано от XmlWriter)
WriteStartElementAsync(String, String, String)

Асинхронно записывает указанный тег запуска и связывает его с заданным пространством имен и префиксом.

(Унаследовано от XmlWriter)
WriteString(String)

Записывает заданное текстовое содержимое.

WriteStringAsync(String)

Асинхронно записывает заданное текстовое содержимое.

(Унаследовано от XmlWriter)
WriteSurrogateCharEntity(Char, Char)

Создает и записывает суррогатную сущность символа для суррогатной пары символов.

WriteSurrogateCharEntityAsync(Char, Char)

Асинхронно создает и записывает суррогатную сущность символа для суррогатной пары символов.

(Унаследовано от XmlWriter)
WriteValue(Boolean)

Записывает Boolean значение.

(Унаследовано от XmlWriter)
WriteValue(DateTime)

Записывает DateTime значение.

(Унаследовано от XmlWriter)
WriteValue(DateTimeOffset)

Записывает DateTimeOffset значение.

(Унаследовано от XmlWriter)
WriteValue(Decimal)

Записывает Decimal значение.

(Унаследовано от XmlWriter)
WriteValue(Double)

Записывает Double значение.

(Унаследовано от XmlWriter)
WriteValue(Int32)

Записывает Int32 значение.

(Унаследовано от XmlWriter)
WriteValue(Int64)

Записывает Int64 значение.

(Унаследовано от XmlWriter)
WriteValue(Object)

Записывает значение объекта.

(Унаследовано от XmlWriter)
WriteValue(Single)

Записывает число с плавающей запятой с одной точностью.

(Унаследовано от XmlWriter)
WriteValue(String)

Записывает String значение.

(Унаследовано от XmlWriter)
WriteWhitespace(String)

Записывает заданное пробел.

WriteWhitespaceAsync(String)

Асинхронно записывает заданное пробел.

(Унаследовано от XmlWriter)

Явные реализации интерфейса

Имя Описание
IDisposable.Dispose()

Описание этого элемента см. в разделе Dispose().

(Унаследовано от XmlWriter)

Методы расширения

Имя Описание
ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ ожидания задач, возвращаемых из асинхронного удаления.

Применяется к

См. также раздел