Lire un flux xml [Résolu]

Signaler
Messages postés
28
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
27 octobre 2008
-
herve_labenere
Messages postés
28
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
27 octobre 2008
-
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

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
16
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
---------------------
Messages postés
28
Date d'inscription
mardi 11 juillet 2006
Statut
Membre
Dernière intervention
27 octobre 2008

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