Lire un flux xml [Résolu]

herve_labenere 28 Messages postés mardi 11 juillet 2006Date d'inscription 27 octobre 2008 Dernière intervention - 18 févr. 2008 à 17:17 - Dernière réponse : herve_labenere 28 Messages postés mardi 11 juillet 2006Date d'inscription 27 octobre 2008 Dernière intervention
- 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
Afficher la suite 

2 réponses

Répondre au sujet
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 18 févr. 2008 à 17:42
+3
Utile
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
---------------------
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de billou_13
herve_labenere 28 Messages postés mardi 11 juillet 2006Date d'inscription 27 octobre 2008 Dernière intervention - 19 févr. 2008 à 12:55
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de herve_labenere

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.