[英]C# - Getting data from an online xml file
如何從此xml站點( http://xboxapi.duncanmackenzie.net/gamertag.ashx?GamerTag=Festive+Turkey )獲取數據並指定數據並將其用作字符串?
使用WebClient對象
public static string GetWebPage(Uri uri) {
if ((uri == null)) {
throw new ArgumentNullException("uri");
}
using (var request = new WebClient()) {
//Download the data
var requestData = request.DownloadData(uri);
//Return the data by encoding it back to text!
return Encoding.ASCII.GetString(requestData);
}
}
如果要將XML直接轉換為可讀數據結構,可以通過URI將其直接加載到XDocument對象中。
string uri = "http://xboxapi.duncanmackenzie.net/gamertag.ashx?GamerTag=Festive+Turkey";
XDocument document = XDocument.Load(uri);
然后,您可以通過Linq-to-XML輕松地將信息提取為具體或匿名類型。 (檢查System.Linq和System.Xml.Linq名稱空間。)
處理XML的其他方法包括序列化,XmlDocuments和XPath等。
以下是您可以使用XML和Linq執行的操作示例。
using System;
using System.Linq;
using System.Xml.Linq;
class XboxStats
{
static void Main()
{
string uri = "http://xboxapi.duncanmackenzie.net/gamertag.ashx?GamerTag=Festive+Turkey";
XDocument document = XDocument.Load(uri);
var xboxInfo = document.Element("XboxInfo");
var data = new
{
AccountStatus = (string)xboxInfo.Element("AccountStatus"),
PresenceInfo = new
{
Valid = (bool)xboxInfo.Element("PresenceInfo").Element("Valid"),
Info = (string)xboxInfo.Element("PresenceInfo").Element("Info"),
Info2 = (string)xboxInfo.Element("PresenceInfo").Element("Info2"),
LastSeen = (DateTime)xboxInfo.Element("PresenceInfo").Element("LastSeen"),
Online = (bool)xboxInfo.Element("PresenceInfo").Element("Online"),
StatusText = (string)xboxInfo.Element("PresenceInfo").Element("StatusText"),
Title = (string)xboxInfo.Element("PresenceInfo").Element("Title")
},
State = (string)xboxInfo.Element("State"),
Gamertag = (string)xboxInfo.Element("Gamertag"),
ProfileUrl = (string)xboxInfo.Element("ProfileUrl"),
TileUrl = (string)xboxInfo.Element("TileUrl"),
Country = (string)xboxInfo.Element("Country"),
Reputation = (decimal)xboxInfo.Element("Reputation"),
Bio = (string)xboxInfo.Element("Bio"),
Location = (string)xboxInfo.Element("Location"),
ReputationImageUrl = (string)xboxInfo.Element("ReputationImageUrl"),
GamerScore = (int)xboxInfo.Element("GamerScore"),
Zone = (string)xboxInfo.Element("Zone"),
RecentGames = new
{
XboxUserGameInfos = from gameInfo in xboxInfo.Element("RecentGames").Elements("XboxUserGameInfo")
select new
{
Game = new
{
Name = (string)gameInfo.Element("Game").Element("Name"),
TotalAchievements = (int)gameInfo.Element("Game").Element("TotalAchievements"),
TotalGamerScore = (int)gameInfo.Element("Game").Element("TotalGamerScore"),
Image32Url = (string)gameInfo.Element("Game").Element("Image32Url"),
Image64Url = (string)gameInfo.Element("Game").Element("Image64Url")
},
LastPlayed = (DateTime)gameInfo.Element("LastPlayed"),
Achievements = (int)gameInfo.Element("Achievements"),
GamerScore = (int)gameInfo.Element("GamerScore"),
DetailsUrl = (string)gameInfo.Element("DetailsUrl")
}
}
};
Console.WriteLine(data.AccountStatus);
foreach (var gameInfo in data.RecentGames.XboxUserGameInfos)
{
Console.WriteLine(gameInfo.Game.Name);
}
Console.Read();
}
}
您可以使用WebClient
類:
Uri url = new Uri("http://xboxapi.duncanmackenzie.net/gamertag.ashx?GamerTag=" + Uri.EscapeDataString(str));
using (var wc = new WebClient()) {
return request.DownloadString(url);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.