Lire un flux xml

Résolu
herve_labenere Messages postés 23 Date d'inscription mardi 11 juillet 2006 Statut Membre Dernière intervention 27 octobre 2008 - 18 févr. 2008 à 17:17
herve_labenere Messages postés 23 Date d'inscription mardi 11 juillet 2006 Statut Membre Dernière intervention 27 octobre 2008 - 19 févr. 2008 à 12:55
Bonjour,

Je conçois actuellement un petit logiciel pour suivre les cours de la Bourse.
J'utilise pour cela un webservice (http://www.webservicex.net/stockquote.asmx?WSDL) qui me donne le cours à partir du symbol de cotation.
EX : ALU pour AlcatelLucent.
Mais le cours est donné dans une chaîne (type string) qui encapsule des données xml.
Ici cela donnera la string suivante : 
   
  

[file:///C:/Users/myriam/AppData/Local/Temp/VSD1.tmp.XML# -]<StockQuotes>

[file:///C:/Users/myriam/AppData/Local/Temp/VSD1.tmp.XML# -]<Stock>

 <Symbol>ALU</Symbol>

 <Last>6.13</Last>

 <Date>2/15/2008</Date>

 <Time>4:01pm</Time>

 <Change>+0.06</Change>

 <Open>6.07</Open>

 <High>6.13</High>

 <Low>6.03</Low>

 <Volume>5172640</Volume>

 <MktCap>13.868B</MktCap>

 <PreviousClose>6.07</PreviousClose>

 <PercentageChange>+0.99%</PercentageChange>

 <AnnRange>5.54 - 14.57</AnnRange>

 <Earns>-1.083</Earns>

 <P-E>N/A</P-E>

 <Name>ALCATEL LUCENT</Name>

 </Stock>

 </StockQuotes>

Ma question est donc comment récupérer la valeur entre les balises <LAST></LAST>, pour avoir la dernière valeur de quotation ???
J'ai pensé au départ à instancier un objet de la classe xmlreader. Mais cette classe prend en paramètre un fichier xml ou un flux xml, pas une chaîne (string).

Herwin

2 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
18 févr. 2008 à 17:42
Salut,


Tu peux utiliser le dernier constructeur de XmlTextReader. Le mieux serait un exemple: http://msdn2.microsoft.com/en-us/library/72fhddt9.aspx


Ou sinon, tu peux utiliser la classe XmlDocument comme ceci:

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.LoadXml("<toto></toto>");


La classe XmlDocument est plus simple pour effecteur des recherches de noeuds comme tu souhaite le faire:

XmlNode valueNode = xmlDoc.SelectSingleNode("//StockQuotes//Stock//Last");

string value = valueNode.InnerText;


Mais cette dernière demande beaucoup plus de ressources... A voir ^^

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
3
herve_labenere Messages postés 23 Date d'inscription mardi 11 juillet 2006 Statut Membre Dernière intervention 27 octobre 2008
19 févr. 2008 à 12:55
Ca marche nickel,
Merci beaucoup.

Je donne le code entier pour ceux que ça intéresse.
- Récupération des données boursières sur un titre dont je passe le symbole dans une textbox (txtbSymbol)
- Appel du webservice dédié (http://www.webservicex.net/stockquote.asmx?WSDL) appelé dans mon application
- Click sur le bouton btnQuotation pour afficher la dernière valeur (last) :

private

void btnQuotation_Click(
object sender,
RoutedEventArgs e){

CoursBourse.

StockQuoteSoapClient sqsc =
new Solenn2.CoursBourse.
StockQuoteSoapClient();

XmlDocument doc =
new
XmlDocument();doc.LoadXml(sqsc.GetQuote(txtbSymbol.Text));

XmlNode valueNode = doc.SelectSingleNode(
"//StockQuotes//Stock//Last");llastQuotation.Content = valueNode.InnerText;

}

 

Herwin
3