首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ到XML -没有绑定吗?

LINQ到XML -没有绑定吗?
EN

Stack Overflow用户
提问于 2011-08-18 19:58:14
回答 2查看 183关注 0票数 0

我正在尝试从XML进行解析,但由于某种原因,在我为变量绑定的文本框中没有任何东西被取消。

我尝试过各种Xdocuemnt或Xelement的变体,但它似乎不起作用。XML结构看起来相当直截了当,所以我不知道出了什么问题。

任何帮助都将不胜感激。

edit************

现在都在工作了。谢谢你的帮助。

代码语言:javascript
复制
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看起来像这样。

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-18 20:55:06

试试这个:

代码语言:javascript
复制
       // 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
                               }; 
票数 2
EN

Stack Overflow用户

发布于 2011-08-18 20:00:35

没有匹配,因为您没有指定名称空间。参见MSDN上的示例代码,在此重复如下:

代码语言:javascript
复制
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");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7113361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档