Classe System.Xml.XmlConvert
Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.
La classe XmlConvert dal punto di vista funzionale equivale alla classe Convert, ma supporta gli standard XML. Il sistema dei tipi è basato sul linguaggio XML Schema Definition (XSD) e i valori restituiti sono sempre indipendenti dalle impostazioni locali.
Codifica e decodifica
I nomi degli elementi e degli attributi o i valori ID sono limitati a un intervallo di caratteri XML in base alla raccomandazione W3C XML 1.0. Quando i nomi contengono caratteri non validi, è possibile utilizzare i metodi EncodeName e DecodeName nella classe per convertirli in nomi XML validi.
Se, ad esempio, si desidera utilizzare l'intestazione di colonna "Order Detail" all'interno di un database, quest'ultimo consente di inserire uno spazio tra le due parole. In XML invece lo spazio tra "Order" e "Detail" viene considerato un carattere XML non valido. È necessario convertire tale spazio in una codifica esadecimale con escape e decodificarlo in un secondo momento.
È possibile utilizzare il metodo EncodeName con la classe XmlWriter per essere certi che i nomi scritti siano nomi XML validi. Il seguente codice C# converte il nome "Order Detail" in un nome XML valido e scrive l'elemento <Order_0x0020_Detail>My order</Order_0x0020_Detail>
.
writer.WriteElementString(XmlConvert.EncodeName("Order Detail"),"My order");
I seguenti metodi XmlConvert eseguono la codifica e la decodifica.
metodo | Descrizione |
---|---|
EncodeName | Accetta un nome e restituisce il nome codificato unitamente a qualsiasi carattere non valido che viene sostituito da una stringa di escape. Questo metodo consente i due punti in qualsiasi posizione, il che significa che il nome potrebbe essere ancora non valido in base alla raccomandazione Spazi dei nomi W3C in XML 1.0. |
EncodeNmToken | Accetta un nome e restituisce il nome codificato. |
EncodeLocalName | Equivale a EncodeName tranne che per il fatto che codifica anche i due punti, garantendo che il nome possa essere utilizzato come la parte LocalName di un completo dello spazio dei nomi. |
DecodeName | Inverte la trasformazione per tutti i metodi di codifica. |
Convalida dei nomi
La XmlConvert classe contiene due metodi che controllano i caratteri in un nome di elemento o attributo e verificano che il nome sia conforme alle regole impostate dalla raccomandazione W3C XML 1.0:
- VerifyName controlla i caratteri e verifica che il nome sia valido. Il metodo restituisce il nome se è valido e se non è valido genera un'eccezione.
- VerifyNCName esegue la stessa convalida, ma accetta nomi non qualificati.
XmlConvert contiene metodi aggiuntivi che consentono di convalidare token, spazi vuoti, ID pubblici e altre stringhe.
Conversione del tipo di dati
XmlConvert fornisce anche metodi che consentono di convertire i dati da una stringa a un tipo di dati fortemente tipizzato. Ad esempio, il metodo ToDateTime consente di convertire una stringa nel relativo oggetto DateTime equivalente. Si tratta di un metodo molto utile in quanto la maggior parte dei metodi della classe XmlReader restituisce i dati sotto forma di stringa. Una volta letti, i dati possono essere convertiti nel tipo di dati corretto prima di essere utilizzati. Gli overload di ToString forniscono l'operazione complementare convertendo i dati fortemente tipizzati in stringhe. Questo è utile ad esempio quando si desidera aggiungere dati alle caselle di testo di una pagina Web. Le impostazioni locali non vengono prese in considerazione durante la conversione dei dati. I tipi di dati sono basati sui tipi di dati XML Schema (XSD).