2

データを Windows Phone アプリに統合するために、XML ファイルを読み込もうとしています。

私は他のいくつかのトピックに従いましたが、それを機能させることができません (私はほとんどその時点にいると感じていますが、まだ何かが欠けています)。

私が読もうとしている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 データを正しく取得できません。

4

2 に答える 2

7

現在のコードには 3 つの問題があります。

  • ドキュメントのルート要素ではなく、ドキュメントに要素要求していますItem
  • Item要素ではなく要素をitem求めています
  • Value属性ではなく属性valueを求めています

また、必要以上に複雑になるため、これにはクエリ式を使用しません。

var items = statusInfo.Root.Elements("item")
                      .Select(node => new Item {
                                 Name = (string) node,
                                 Value = (string) node.Attribute("value")
                              })
                      .ToList();
于 2013-08-13T06:19:46.823 に答える
0

これを使って:

 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;


        }
于 2013-08-13T06:40:30.380 に答える