29 messaggi dal 17 settembre 2001
Buonasera ragazzi,

ho un problema di lettura con questo file xml.

<ipclass id="2">
<desc>prova</desc>
<via>via pluto e paperino</via>
<Latitude>45.40483</Latitude>
<Longitude>18.12262</Longitude>
</ipclass>

In c# sono riuscito a estrapolare i vari attributi..

XmlTextReader bankReader = null;
bankReader = new XmlTextReader(m_strFileName);

while (bankReader.Read())
{
if (bankReader.NodeType == XmlNodeType.Element)
{
if (bankReader.LocalName.Equals("desc"))
{
Label3.Text = bankReader.ReadString();
}
if (bankReader.LocalName.Equals("via"))
{
Label4.Text = bankReader.ReadString();
}
if (bankReader.LocalName.Equals("Latitude"))
{
Label5.Text = bankReader.ReadString();
}
if (bankReader.LocalName.Equals("Longitude"))
{
Label6.Text = bankReader.ReadString();
}
}
}

però non riesco ad estrapolare, magari per un controllo, il valore id del nodo ipclass. Cosi da condizionare i valori successivi da ricavare.

Avete idea di come o cosa usare per estrapolare il dato?
Tipo label1.text = bankreader.value("id")...o qualcosa del genere..

Luca.
176 messaggi dal 04 giugno 2007
Contributi | Blog
Linea 3 del tuo codice:
if (bankReader.NodeType == XmlNodeType.Element) 


Scarti esplicitamente tutto quello che non è un elemento.

Correggere in

if (bankReader.NodeType == XmlNodeType.Element || bankReader.NodeType == XmlNodeType.Attribute) 


dovrebbe consentirti di aggiungere un innocuo

if (bankReader.LocalName.Equals("id")) 
{ 
LabelN.Text = bankReader.ReadString(); 
} 


(certo che questo codice non sarà il massimo del manutenibile...)

HTH

--Alessandro
29 messaggi dal 17 settembre 2001
Ho aggiunto le righe di codice descritte ma non estrapola comunque l'id.

<ipclass id="2">
<desc>Assago</desc>
<via>Via Edison 6, Milano, Assago</via>
<Latitude>45.40483</Latitude>
<Longitude>9.12262</Longitude>
</ipclass>

Magari ci sono altri metodi, magari più eleganti?

Luca.
176 messaggi dal 04 giugno 2007
Contributi | Blog
Read skippa gli attributi... Interessante.

prova questo

if(bankReader.LocalName.Equals("ipclass"))
{
    if(bankReader.MoveToAttribute("id")
    {
       bankReader.ReadAttributeValue();  
       LabelN.Text = bankReader.Value;
    }
}    


Come idea, se fosse codice mio userei un XSLT. E' piu' scalabile e isola tutta la complessita' in un posto solo.

Saluti

--Alessandro

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.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC