Mik*_*893 2 c# xml linq xml-parsing
我正在尝试读取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>
Run Code Online (Sandbox Code Playgroud)
它包含游戏服务器的信息.
我正在从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();
}
Run Code Online (Sandbox Code Playgroud)
看起来我正确地进入了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();
Run Code Online (Sandbox Code Playgroud)