在 windows phone 中搜索 xml 文档的元素 8

Search through the elements of an xml document in windows phone 8

我有一个 xml 文档,我正在尝试查询 link 数据到 windows phone 8 中的列表框,但我到目前为止都失败了。在线示例似乎没有带来我想要的东西。 以下是我目前所拥有的。在 xml。 这是我的 xml 文档(mydata.cml)

 <resources>
    <songCover>
        <item>Images/song1</item>
        <item>Images/song2</item>
         .....
    </songCover>
    <songName>
        <item>song1</item>
        <item>song2</item>
        .....
    </songName>
    <releaseYear>
        <item>2015</item>
        <item>2014</item>
         .....
    </releaseYear>

和 c#

     XDocument doc=XDocument.Load("mydata.xml");
     var data1=from Q in doc.Descedants("songCover") select new{Item=Q.Element("item").Value;
     var data2=from Q in doc.Descedants("songName") select new{Item=Q.Element("item").Value;
     var data3=from Q in doc.Descedants("releaseYear") select new{Item=Q.Element("item").Value;

foreach(var x in data1)
    foreach(var y in data2)
       foreach(var z in data3)
  //create a list of songs with there data eg [songCover1,song1,2015],[songCover2,song2,2014] etc

这是我的xaml

<longlistselector>
......
<stackPanel>
    <image height=”100” width=”100” source={Binding data1} horizontal-alignment=left/>
    <textblock horizontal-alignment=right text={Binding data 2}/>
    <texblock horizontal-alignment=right text={Binding data 3}/>
</stackPanel>
......
</longlistselector>

提前谢谢你。

这是您要找的吗?我假设(根据您在代码段中作为评论写的内容)封面、姓名和年份分别位于同一位置。

XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load("path_here");
        XmlNodeList covers = xmlDoc.SelectNodes("/songCover/item");
        XmlNodeList names = xmlDoc.SelectNodes("/songName/item");
        XmlNodeList years = xmlDoc.SelectNodes("/releaseYear/item");


        for(int i=0;i<covers.Count; i++)
        {
            Console.WriteLine("[ "+ covers[i].Value +", " + names[i].Value + ", "+ years[i].Value  + " ]");
        }
XDocument xdoc = XDocument.Load("file_path_here");
                List<xElement> covers = xDoc.XPathSelectElements("/songCover/item").ToList();
                List<xElement> names = xDoc.XPathSelectElements("/songName/item").ToList();
                List<xElement> years = xDoc.XPathSelectElements("/releaseYear/item").ToList();

                for (int i = 0; i < covers.Count; i++)
                {
                    Console.WriteLine("[ " + covers[i].Value + ", " + names[i].Value + ", " + years[i].Value + " ]");
                }

假设每个集合(songCovers, songNames, and releaseYears)中的条目数量相同,并且它们通过索引对应,你可以这样做:

XDocument doc = XDocument.Load("mydata.xml");
var data1 = doc.Descedants("songCover")
               .Elements("item")
               .Select(o => o.Value)
               .ToList();
var data2 = doc.Descedants("songName")
               .Elements("item")
               .Select(o => o.Value)
               .ToList();
var data3 = doc.Descedants("releaseYear")
               .Elements("item")
               .Select(o => o.Value)
               .ToList();

for(int i=0; i<data1.Count; i++)
{
    var songCover = data1[i];
    var songName = data2[i];
    var releaseYear = data3[i];
    //combine the 3 values above as needed
}