LINQ到XML - 没有什么是绑定?

我试图从XML解析,但出于某种原因,没有什么是我已为变量的绑定我的文本框被disaplyed。

我试过havae各种各样的人SOF Xdocuemnt或变异的XElement的,但它似乎并没有工作。 XML结构似乎相当直截了当,所以我无法弄清楚什么错误。

任何帮助,将不胜感激。

编辑* ** * ** * ****

现在,所有的工作。 感谢我们的帮助。

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; using System.Xml.Linq; namespace TradeMe { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { WebClient Trademe = new WebClient(); Trademe.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Trademe_DownloadStringCompleted); Trademe.DownloadStringAsync(new Uri ("http://api.trademe.co.nz/v1/Search/General.xml?search_string=" + TradeSearch.Text)); } void Trademe_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { if (e.Error != null) return; var r = XDocument.Parse(e.Result); // Declare the namespace XNamespace ns = "http://api.trademe.co.nz/v1"; listBox1.ItemsSource = from TM in r.Root.Descendants(ns + "Listing") select new TradeItem { //ImageSource = TM.Element(ns + "Listing").Element(ns + "PictureHref").Value, Message = TM.Element(ns + "Title").Value, UserName = TM.Element(ns + "Region").Value }; } public class TradeItem { public string UserName { get; set; } public string Message { get; set; } public string ImageSource { get; set; } } } }

XML看起来像这样。

<SearchResults xmlns="http://api.trademe.co.nz/v1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <TotalCount>12723</TotalCount> <Page>1</Page> <PageSize>50</PageSize> - <List> - <Listing> <ListingId>399739762</ListingId> <Title>Playstation 3 320GB Slim going at $1 Reserve</Title> <Category>0202-6205-6207-</Category> <StartPrice>1.0000</StartPrice> <StartDate>2011-08-14T22:52:28.833Z</StartDate> <EndDate>2011-08-21T08:45:00Z</EndDate> <ListingLength i:nil="true" /> <HasGallery>true</HasGallery> <MaxBidAmount>400.0000</MaxBidAmount> <AsAt>2011-08-18T19:33:41.4561556Z</AsAt> <CategoryPath>/Gaming/PlayStation-3/Consoles</CategoryPath> <PictureHref>http://images.trademe.co.nz/photoserver/thumb/27/183787627.jpg</PictureHref> <RegionId>2</RegionId> <Region>Auckland</Region> <BidCount>137</BidCount> <IsReserveMet>true</IsReserveMet> <HasReserve>true</HasReserve> <NoteDate>1970-01-01T00:00:00Z</NoteDate> <ReserveState>Met</ReserveState> <PriceDisplay>$400.00</PriceDisplay> </Listing>

--------------解决方案-------------

尝试这个:

// Declare the namespace
XNamespace ns = "http://api.trademe.co.nz/v1";
listBox1.ItemsSource = from TM in r.Root.Descendants(ns+"List")
select new TradeItem
{
ImageSource = TM.Element(ns+"Listing")
.Element(ns+"PictureHref").Value,
Message = TM.Element(ns+"PageSize").Value,
UserName = TM.Element(ns+"SearchResults").Element(ns+"Page").Value
};

没有什么是匹配的,因为你没有指定命名空间。 参见MSDN示例代码,这里不再重复:

XElement root = XElement.Parse(
@"<Root xmlns='http://www.adventure-works.com'>
<Child>1</Child>
<Child>2</Child>
<Child>3</Child>
<AnotherChild>4</AnotherChild>
<AnotherChild>5</AnotherChild>
<AnotherChild>6</AnotherChild>
</Root>");
XNamespace aw = "http://www.adventure-works.com";
IEnumerable<XElement> c1 =
from el in root.Elements(aw + "Child")
select el;
Console.WriteLine("Result set follows:");
foreach (XElement el in c1)
Console.WriteLine((int)el);
Console.WriteLine("End of result set");

分类:C# 时间:2015-03-14 人气:0
本文关键词: LINQ,XML,Silverlight的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.680 (s). 10 q(s)