Gravando dados digitados
A classe de XmlWriter fornece a capacidade de gravar dados digitados.O método de WriteValue aceita valores digitados simples (CLR) common language runtime).Esse recurso é útil ao trabalhar com tipos CLR simples e uma instância de XmlWriter .Você pode chamar o método de WriteValue para escrever o valor digitado, em vez de usar os métodos da classe de XmlConvert para converter os dados digitados como um valor de cadeia de caracteres antes de gravar out.
Valores digitados de gravação
O método de WriteValue usa um objeto CLR e converte o valor de entrada para o tipo desejado de saída usando as regras de conversão de tipo de dados de linguagem de definição de esquema XML (XSD).Se o objeto CLR é um tipo de lista, como IEnumerable, IList, ou ICollection, será tratado como uma matriz do tipo de valor.
Quando o método de WriteValue é chamado, XmlWriter converte o valor em suas representações de cadeia de caracteres de acordo com as regras e as gravações de tipo de dados de (XSD) de esquema XML ela por meio do método de WriteString .
Gravando em texto
Quando WriteValue é chamado, o valor digitado será serializado em texto usando as regras de XmlConvert para esse tipo de esquema.
Tipo CLR |
Tipo de dados padrão de (XSD) de esquema XML |
---|---|
System.Boolean |
xsd: booliano |
System.Byte ** |
xsd: inteiro |
System.Byte [] |
xsd: base64Binary |
System.Char ** |
xsd: cadeia de caracteres |
System.DateTime |
xsd: dateTime |
System.Decimal |
xsd: decimal |
System.Double |
xsd: double |
System.Int16 ** |
xsd: inteiro |
System.Int32 |
xsd: inteiro |
System.Int64 |
xsd: inteiro |
System.Single |
xsd: float |
System.String |
xsd: cadeia de caracteres |
System.IO.TextReader |
xsd: cadeia de caracteres |
System.IO.BinaryReader |
xsd: base64Binary |
** Esses tipos não são compatíveis com CLS.Não têm um método correspondente na classe de XmlReader .
Dica
Se WriteValue é chamado várias vezes sucessivamente, os valores não serão separados por um espaço.Você deve chamar WriteWhitespace entre as chamadas para WriteValue para inserir o espaço em branco.
Gravada em um repositório de dados XML
XmlWriter pode ser usado para gravar a um repositório de dados XML.Por exemplo, a classe de XPathNavigator possível criar um objeto de XmlWriter para criar nós para um objeto de XmlDocument .
Se o repositório de dados tiver informações disponíveis de esquema, o método de WriteValue lançará uma exceção se as tentativas de chamada de WriteValue de conversão em um tipo que não é permitido.
Se o repositório de dados não tiver informações disponíveis de esquema, o método de WriteValue trata todos os valores como um tipo de xsd:anySimpleType .
Exemplo
O exemplo a seguir aumenta o preço de livro de 15 por cento antes de serem gravados fora.Informações de esquema são obtidas de leitura, que é um objeto de validação de 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();