Domanda

Ho un XML che voglio caricare di oggetti, manipolare gli oggetti (set di valori, i valori letti) e quindi salvare i XMLs indietro.È importante per me avere l'XML nella struttura (xsd) che ho creato.

Un modo per farlo è quello di scrivere il mio serializzatore, ma c'è un costruito in supporto o open source in C# che posso utilizzare?

È stato utile?

Soluzione

È possibile generare serializable C# classi da uno schema (xsd) utilizzando xsd.exe:

xsd.exe dependency1.xsd dependency2.xsd schema.xsd /out:outputDir

Se lo schema ha delle dipendenze (incluso/schemi importati), devono essere inseriti tutti nella stessa riga di comando.

Altri suggerimenti

Questo codice (C# DotNet 1.0 in poi) funziona abbastanza bene per serializzare la maggior parte degli oggetti XML.(e ritorno) Non funziona per gli oggetti contenenti ArrayLists, e, se possibile, attenersi a usare solo le Matrici

using System;    
using System.IO;
using System.Text;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;


public static string Serialize(object objectToSerialize)
{
    MemoryStream mem = new MemoryStream();          
    XmlSerializer ser = new XmlSerializer(objectToSerialize.GetType());         
    ser.Serialize(mem, objectToSerialize);                      
    ASCIIEncoding ascii = new ASCIIEncoding();
    return ascii.GetString(mem.ToArray());
}        

public static object Deserialize(Type typeToDeserialize, string xmlString)
{
    byte[] bytes = Encoding.UTF8.GetBytes(xmlString);
    MemoryStream mem = new MemoryStream(bytes);         
    XmlSerializer ser = new XmlSerializer(typeToDeserialize);
    return ser.Deserialize(mem);
}

LINQ to XML è molto potente, soprattutto se si sta utilizzando .net 3.5, LINQ to XSD può essere utile anche a voi!

Utilizzare xsd.exe programma a riga di comando che viene fornito con visual studio per creare file di classe che è possibile utilizzare nel vostro progetto/soluzione, e il Sistema.Xml.La serializzazione dello spazio dei nomi (in particolare, la classe XmlSerializer) per serializzare/deserialze quelle classi a e dal disco.

utilizzando Sistema.Xml.La serializzazione;questo spazio dei nomi ha tutti gli attributi è necessario se si desidera mappa xml per qualsiasi oggetto random.In alternativa è possibile utilizzare il xsd.exe strumento

file xsd.xsd {/classes | /dataset} [/elemento:elemento] [/lingua:la lingua] [/spazio dei nomi:namespace] [/outputdir:directory] [URI:uri] che avrà il vostro file xsd e creare di c# o vb.net classi di fuori di essi.

http://msdn.microsoft.com/en-us/library/x6c1kb0s(VS.71).aspx

Sono d'accordo xsd è veramente schifo...Ma hanno fatto un'altra versione che quasi nessuno conosce.La sua chiamata xsd oggetto del generatore.La sua prossima versione e ha più opzioni.Esso genera file da XSD e opere fantastico.Se si dispone di un generatore di schema XML spy;creare un xsd xml e utilizzare questo strumento.Ho creato molto, molto complesso classi di utilizzo di questo strumento.Quindi creare classi parziali per le proprietà aggiuntive\ecc metodi, poi quando si aggiorna il tuo schema è solo regen le classi e tutte le modifiche che persistono parziale classi.

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7075

xsd.exe Microsoft ha un sacco di bug :| Provare questo open source perla http://xsd2code.codeplex.com/

Abbiamo creato un quadro di riferimento che possono generare automaticamente in C# le classi di XML.La sua visivo modello di elemento a cui passare il tuo XML e le classi sono generati automaticamente nel vostro progetto.L'utilizzo di queste classi è possibile creare/leggere/scrivere file XML.

Controllare questo link per il framework e Visual C# modello di elemento: clicca qui

Scommetto NetDataContractSerializer può fare quello che vuoi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top