C# 获取最新货币
我想写一个简单的控制台应用程序,显示最新的美元货币。 数据将取自国家银行- 这是我的密码:C# 获取最新货币,c#,html,xml,webrequest,C#,Html,Xml,Webrequest,我想写一个简单的控制台应用程序,显示最新的美元货币。 数据将取自国家银行- 这是我的密码: string data = string.Empty; string url = "http://www.nbg.ge/rss.php"; string html = string.Empty; string pattern = "USD</td>\r\n<td align=\"right\">(.*)</td&
string data = string.Empty;
string url = "http://www.nbg.ge/rss.php";
string html = string.Empty;
string pattern = "USD</td>\r\n<td align=\"right\">(.*)</td>";
DateTime today = DateTime.Now;
data = today.Date.ToShortDateString();
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
html = myStreamReader.ReadToEnd();
Match match = Regex.Match(html, pattern);
Console.WriteLine("{0} USD EXCHANGE RATE {1}.", data, match.Groups[1].ToString());
Console.ReadLine();
string data=string.Empty;
字符串url=”http://www.nbg.ge/rss.php";
string html=string.Empty;
字符串模式=“USD\r\n(.*);
DateTime today=DateTime.Now;
data=today.Date.ToShortDateString();
HttpWebRequest myHttpWebRequest=(HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
StreamReader myStreamReader=新的StreamReader(myHttpWebResponse.GetResponseStream());
html=myStreamReader.ReadToEnd();
Match=Regex.Match(html,模式);
Console.WriteLine(“{0}美元汇率{1}.”,数据,match.Groups[1].ToString());
Console.ReadLine();
如何从站点获取美元数据?
谢谢
更新强>
我将“模式”更改为string pattern=“(.*)”代码>
它将显示列表中的第一个td项:
2016年5月29日美元汇率AED。XML数据中存在错误。必须使用正则表达式来修复。图像标记在结束标记前缺少“/”。下面是解析的结果
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using System.Text.RegularExpressions;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
const string url = "http://www.nbg.ge/rss.php";
public Form1()
{
InitializeComponent();
XElement rss = XElement.Load(url);
DataTable dt = new DataTable();
dt.Columns.Add("Currency", typeof(string));
dt.Columns.Add("Description", typeof(string));
dt.Columns.Add("Rate", typeof(decimal));
XElement description = rss.Descendants("item").FirstOrDefault().Descendants("description").FirstOrDefault();
string value = description.Value;
value = Regex.Replace(value, "(src=\\\"[^\\\"]+\\\")", "$1/");
XElement table = XElement.Parse(value);
foreach (XElement row in table.Descendants("tr"))
{
List<XElement> columns = row.Elements("td").ToList();
dt.Rows.Add(new object[] {(string)columns[0], (string)columns[1], (decimal)columns[2]});
}
dataGridView1.DataSource = dt;
}
}
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Windows.Forms;
使用System.Xml;
使用System.Xml.Linq;
使用System.Text.RegularExpressions;
命名空间Windows窗体应用程序1
{
公共部分类Form1:Form
{
常量字符串url=”http://www.nbg.ge/rss.php";
公共表格1()
{
初始化组件();
XElement rss=XElement.Load(url);
DataTable dt=新的DataTable();
添加(“货币”,类型(字符串));
添加(“说明”,类型(字符串));
添加(“比率”,类型(十进制));
XElement description=rss.substands(“项”).FirstOrDefault().substands(“description”).FirstOrDefault();
字符串值=description.value;
value=Regex.Replace(value,“(src=\\\”[^\\\”]+\\\”,“$1/”;
XElement table=XElement.Parse(值);
foreach(table.substands(“tr”)中的XElement行)
{
列表列=row.Elements(“td”).ToList();
Add(新对象[]{(字符串)列[0],(字符串)列[1],(十进制)列[2]});
}
dataGridView1.DataSource=dt;
}
}
}
在PHP中,您可以使用CURL、SimpleXMLDocument、文件和数组助手的组合轻松实现这一点,如下所示:
<?php
$defaults = array(
CURLOPT_URL => 'http://www.nbg.ge/rss.php',
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
);
$curl = curl_init();
curl_setopt_array($curl, $defaults);
$v = "";
// SHOULD ANY ERROR OCCUR, DISPLAY THE ERROR(S), DO GARBAGE COLLECTION & TERMINATE THE PROGRAM.
$curl_response = curl_exec($curl);
if( curl_errno($curl)){
var_dump( curl_error($curl));
curl_close($curl);
exit;
}else{
// PROCESS THE RSS FEED...
if($curl_response){
$sxElem = new SimpleXMLElement($curl_response);
$xml = simplexml_load_string($curl_response, 'SimpleXMLElement', LIBXML_NOCDATA); //LIBXML_NOCDATA LIBXML_NOWARNING
foreach($xml as $key=>$data){
if($a = $data->item){
/**@var SimpleXMLElement $desc */
$desc = $a->description;
$v = print_r($a->description, true);
}
}
}
}
// SAVE THE DATA TO A TEXT FILE TO BE READ LINE BY LINE LATER...
file_put_contents("data.txt", $v);
// GET THE DATA FROM THE TEXT FILE AND THEN EXPLODE TO AN ARRAY
$data = file_get_contents("_data.txt");
$arrData = explode("\n", $data);
$countryCodes = array();
$exchangeRates = array();
// LOOP THROUGH EACH LINE & SORT OUT THE DATA YOU NEED...
foreach($arrData as $lineNum=>$lineData){
$countryCode = null;
if( preg_match("#(<td>)([A-Z]{3})(<\/td>)#", $lineData, $matches)){
list(, $n1, $countryCode, $n2) = $matches;
if(!array_key_exists($countryCode, $exchangeRates)){
$countryCodes[] = $countryCode;
}
}
if( preg_match("#(<td>)([0-9\.]*)(<\/td>)#", $lineData, $matches2)){
list(, $n1, $rate, $n2) = $matches2;
if($rate != "0.0000"){
$exchangeRates[] = $rate;
}
}
}
$arrExchange = array_combine($countryCodes, $exchangeRates);
$jsonExchangeRate = json_encode($arrExchange);
var_dump($arrExchange);
var_dump($jsonExchangeRate);
JSON等价物的结果是:
'{"AED":"5.8432","AMD":"4.4921","AUD":"1.5491","AZN":"1.4388","BGN":"1.2263","BRL":"0.5989","BYR":"1.0898","CAD":"1.6465","CHF":"2.1662","CNY":"3.2708","CZK":"0.8875","DKK":"3.2253","EGP":"2.4197","EUR":"2.3985","GBP":"3.1438","HKD":"2.7637","HUF":"0.7631","ILS":"5.5821","INR":"3.2016","IRR":"0.7082","ISK":"1.7194","JPY":"1.9585","KGS":"3.1414","KRW":"1.8198","KWD":"7.1039","KZT":"0.6392","MDL":"1.0714","NOK":"2.5844","NZD":"1.4469","PLN":"5.4544","QAR":"5.8943","RON":"5.3217","RSD":"1.9438","RUB":"3.2531","'... (length=646)
您没有描述问题或实际提出问题。当您从网站获取数据时,您的问题是一个正则表达式问题,为此,您必须发布网站的示例输出(值html=myStreamReader.ReadToEnd();
)1美元???2.1461 0.0000
'{"AED":"5.8432","AMD":"4.4921","AUD":"1.5491","AZN":"1.4388","BGN":"1.2263","BRL":"0.5989","BYR":"1.0898","CAD":"1.6465","CHF":"2.1662","CNY":"3.2708","CZK":"0.8875","DKK":"3.2253","EGP":"2.4197","EUR":"2.3985","GBP":"3.1438","HKD":"2.7637","HUF":"0.7631","ILS":"5.5821","INR":"3.2016","IRR":"0.7082","ISK":"1.7194","JPY":"1.9585","KGS":"3.1414","KRW":"1.8198","KWD":"7.1039","KZT":"0.6392","MDL":"1.0714","NOK":"2.5844","NZD":"1.4469","PLN":"5.4544","QAR":"5.8943","RON":"5.3217","RSD":"1.9438","RUB":"3.2531","'... (length=646)