72 messaggi dal 18 gennaio 2007
Buongiorno a tutti,
mi trovo a scambiare richieste e risposte in XML con un provider di informazioni e trovo un metodo comodo e pulito usare la classe XmlSerializer con tutte le (comodissime) classi di contorno (XmlAttributeOverrides e le altre).
In questo modo tutto il flusso e' rigidamente OO e estremamente mantenibile nel tempo.
Ostacolo: non so come definire campi e attributi (XmlAttribute() e XmlAttributeAttribute()) per gestire una situazione come questa (prendo ad es. un esempio XML che i signori di aspItalia riconosceranno - pag. 35):
<TextBlock Width="100">Cliccami</TextBlock>
Come la deserializzo?
Se fosse
<TextBlock Width="100">
<Value>Cliccami</Value>
</TextBlock>
avrei:
[XmlRoot(Namespace = "...", ElementName = "TextBlock", DataType = "string", IsNullable = false)]
public class TxtClass
{
[XmlAttributeAttribute()]
public string Width;

public string Value;
}
Ma non so come dire a XmlSerialize che un campo ha sia attributo/i che valore!
Ho guardato in giro e ho trovato solo esempi banali, che so gia' come gestire.
Mi son visto anche il video in "http://media.aspitalia.com/screencast/LINQ-to-XML-introduzione.media" ma non mi risolve il problema.
Se qualcuno ha qualche idea, grazie!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,

dinoerre ha scritto:
non so come definire campi e attributi per gestire una situazione come questa
<TextBlock Width="100">Cliccami</TextBlock>

Penso che tu fossi vicino alla soluzione, dovevi solo scovare l'attributo giusto.
Dato che il valore 'Cliccami' è il testo del nodo, allora puoi decorare la proprietà Value con l'attributo XmlText.

public class TextBlock
{
    [XmlAttribute]
    public int Width { get; set; }

    [XmlText]
    public string Value { get; set; }
}


ciao,
Moreno

Enjoy learning and just keep making
72 messaggi dal 18 gennaio 2007
Azz! Vado subbito (anche con 4 b!) a provar!
Ma sai che non ho trovato uno straccio d'esempio da niuna parte? Ne' su MSDN ne' in giro? Tutti esempi facili facili. Tze'!
Grazie mille per la spinta! Vado e provo. Spciu'! :)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.