Condividi tramite


Scrittura di dati tipizzati

La classe XmlWriter consente di scrivere dati tipizzati. Il metodo WriteValue accetta i valori di tipo semplice CLR (Common Language Runtime). Questa funzionalità è utile quando si utilizzano tipi semplici CLR e un'istanza XmlWriter. È possibile chiamare il metodo WriteValue per scrivere il valore tipizzato, anziché utilizzare i metodi della classe XmlConvert per convertire i dati tipizzati in un valore di stringa prima della scrittura.

Scrittura di valori tipizzati

Il metodo WriteValue accetta un oggetto CLR e converte il valore di input nel tipo di output desiderato utilizzando le regole di conversione dei tipi di dati XSD (XML Schema Definition Language). Se l'oggetto CLR è un tipo di elenco, ad esempio IEnumerable, IList o ICollection, verrà considerato una matrice del tipo di valore.

Quando viene chiamato il metodo WriteValue, il XmlWriter converte il valore nelle relative rappresentazioni di stringa in base alle regole dei tipi di dati XSD (XML Schema) e li scrive utilizzando il metodo WriteString.

Scrittura di testo

Quando viene chiamato il WriteValue, il valore tipizzato viene serializzato come testo utilizzando le regole XmlConvert per quel tipo di schema.

Tipo CLR

Tipo di dati XSD (XML Schema) predefinito

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

**Questi tipi non sono conformi a CLS. Non dispongono di un metodo corrispondente nella classe XmlReader.

NotaNota

Se WriteValue viene chiamato più volte in successione, i valori non sono delimitati da uno spazio.È necessario chiamare il metodo WriteWhitespace tra le chiamate a WriteValue per inserire uno spazio vuoto.

Scrittura in un archivio dati XML

Il tipo XmlWriter può essere utilizzato per scrivere in un archivio dati XML. Ad esempio, la classe XPathNavigator può creare un oggetto XmlWriter e quindi creare nodi per un oggetto XmlDocument.

Se nell'archivio dati sono disponibili informazioni sullo schema, il metodo WriteValue genera un'eccezione se la chiamata WriteValue tenta di convertirlo in un tipo non consentito.

Se nell'archivio dati non sono disponibili informazioni sullo schema, il metodo WriteValue considera tutti i valori come tipo xsd:anySimpleType.

Esempio

Nell'esempio seguente il prezzo del libro viene aumentato del 15% prima della scrittura. Le informazioni sullo schema vengono ottenute dal lettore, ovvero da un oggetto di convalida 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();

Vedere anche

Altre risorse

Scrittura di XML con XmlWriter

Supporto di tipi di dati nelle classi System.Xml