Поделиться через


Запись типизированных данных

Класс XmlWriter позволяет записывать типизированные данные. Метод WriteValue принимает значения среды CLR простых типов. Эта возможность удобна при работе с простыми типами среды CLR и экземпляром XmlWriter. Для записи типизированного значения можно вызвать метод WriteValue вместо преобразования типизированных данных в строковое значение перед записью с помощью методов класса XmlConvert.

Запись типизированных значений

Метод WriteValue принимает объект CLR и преобразует входное значение в нужный тип вывода с применением правил преобразования типов данных языка XSD. Если объект CLR принадлежит к типу списка, например IEnumerable, IList или ICollection, то он обрабатывается как массив типа значения.

При вызове метода WriteValue XmlWriter преобразует значение в строковое представление в соответствии с правилами типа данных XSD и записывает его с помощью метода WriteString.

Запись в текстовом формате

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

Тип CLR

Тип данных схемы XML (XSD) по умолчанию

System.Boolean

xsd:boolean

System.Byte**

xsd:integer

System.Byte[]

xsd:base64Binary

System.Char**

xsd:string

System.DateTime

xsd:dateTime

System.Decimal

xsd:decimal

System.Double

xsd:double

System.Int16**

xsd:integer

System.Int32

xsd:integer

System.Int64

xsd:integer

System.Single

xsd:float

System.String

xsd:string

System.IO.TextReader

xsd:string

System.IO.BinaryReader

xsd:base64Binary

**Эти типы не совместимы с CLS. У них нет соответствующего метода в классе XmlReader.

ПримечаниеПримечание

Если WriteValue вызывается несколько раз подряд, то значения не разделяются пробелом.Для вставки пробела необходимо вызывать метод WriteWhitespace между вызовами WriteValue.

Запись в хранилище XML-данных

Класс XmlWriter можно использовать для записи в хранилище XML-данных. Например, класс XPathNavigator может создать объект XmlWriter для создания узлов для объекта XmlDocument.

При наличии сведений схемы хранилища данных метод WriteValue вызывает исключение, если при вызове WriteValue происходит попытка преобразовать запрещенный тип.

Если для хранилища данных нет информационной схемы, то метод WriteValue обрабатывает все значения как тип xsd:anySimpleType.

Пример

В следующем примере цена книги повышается на 15 процентов перед записью. Сведения схемы извлекаются из модуля чтения, который представляет собой проверяющий объект XmlReader.

reader.ReadToDescendant("price")
writer.WriteStartElement("price")
writer.WriteValue(reader.ReadElementContentAsDouble() * 1.15)
writer.WriteEndElement()
reader.ReadToDescendant("price");
writer.WriteStartElement("price");
writer.WriteValue((reader.ReadElementContentAsDouble()) * 1.15);
writer.WriteEndElement();

См. также

Другие ресурсы

Запись XML с помощью XmlWriter

Поддержка типов в классах System.Xml