[英]C# - Reading XML file
我正在尝试读取XML文件,以便将数据集成到Windows Phone App中。
我关注了其他一些主题,但无法使其正常工作(我觉得我快到了要点,但仍然缺少一些东西)。
我想读的XML是:
<?xml version="1.0" encoding="utf-8"?>
<items>
<item value="0">status</item>
<item value="210">online</item>
<item value="22h 49m 49s">uptime</item>
<item value="90">latency</item>
<item value="423">maxplayers_ever</item>
<item value="263">maxplayers_week</item>
<item value="252">maxplayers</item>
</items>
它包含游戏服务器的信息。
我正在从URL读取它,这是我使用的代码:
public class Item
{
public string Name { get; set; }
public string Value { get; set; }
}
private void LoadXMLFile()
{
WebClient wc = new WebClient();
wc.DownloadStringCompleted += HttpsCompleted;
wc.DownloadStringAsync(new Uri("https://www.forgottenlands.eu/data.xml.php"));
}
private void HttpsCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
this.Items.Add(new ItemViewModel() { LineOne = "TEST I REACH HTTPS" });
XDocument statusinfo = XDocument.Parse(e.Result, LoadOptions.None);
List<Item> items =
(from node in statusinfo.Elements("Item")
select new Item
{
Name = (string)node.Value,
Value = (string)node.Attribute("Value")
}).ToList();
foreach (var item in items)
this.Items.Add(new ItemViewModel() { LineOne = item.Name + " " + item.Value });
this.IsDataLoaded = true;
}
}
public void LoadData()
{
// Sample data; replace with real data
// the xml file contains your provided xml code
LoadXMLFile();
}
好像我正确进入了httpscompleted
函数,但是我没有正确获得XML数据。
当前代码中存在三个问题:
Item
元素,而不是文档根元素 Item
元素而不是item
元素 Value
属性而不是value
属性 我也不会为此使用查询表达式,因为它使事情变得比它们需要的更为复杂:
var items = statusInfo.Root.Elements("item")
.Select(node => new Item {
Name = (string) node,
Value = (string) node.Attribute("value")
})
.ToList();
用这个:
XDocument DocumentObject = XDocument.Load("yourxml.xml");
IEnumerable<XElement> Itrem = from ItemInfo in DocumentObject.Descendants("items").Elements("item") select ItemInfo;
foreach (var t in Itrem)
{
string Item = (string)t.Value;
string Itemvalue = (string)t.Attribute("value").Value;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.