2012-01-11 48 views
-1

属性余米结合网络的XML,但它的读数只有第一个记录绑定网页XML在列表框中

XML

<?xml version="1.0"?> 
<content> 
    <content_row id="1" day="1" title="test" from="01:10" first_name="jitendra" last_name="shakyawar" about_keynote="test" image="1326091608.jpg" innhold="1" about_speaker="test" desc="" flattr_url=""/> 
    <content_row id="4" day="1" title="test 4" from="04:20" first_name="" last_name="" about_keynote="" image="" innhold="2" about_speaker="" desc="Test 4" flattr_url=""/> 
</content> 

XAML:

<cc:TabControl HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,80,0,0"> 
       <cc:TabItem Name="tabDag1" Height="50" Width="80" Header="Dag 1" Style="{StaticResource TabItemStyle1}" Foreground="Black" > 
       <Grid x:Name="ContentGrid" Grid.Row="1" HorizontalAlignment="Center" Margin="5,0,0,0"> 
        <ListBox Name="listDag1" Width="440" Background="Black"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal" Height="auto" HorizontalAlignment="Left" Margin="0,20,20,0"> 
            <TextBlock TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" Text="{Binding From}" FontWeight="Bold" FontSize="28"/> 
            <TextBlock TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" Text="{Binding FirstName}"/> 
            <TextBlock TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" Text="{Binding LastName}"/> 
            <TextBlock TextWrapping="Wrap" Style="{StaticResource PhoneTextNormalStyle}" Text="{Binding AboutSpeaker}"/> 
           </StackPanel> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 
       </Grid> 
      </cc:TabItem> 
    </cc:TabControl> 

C#

XDocument xdoc = XDocument.Parse(e.Result); 
var data = from query in xdoc.Descendants("content") 
      select new ContentItems 
      { 
       FirstName = (query.Element("content_row") == null) ? "" : (string)query.Element("content_row").Attribute("first_name").Value, 
       LastName = (query.Element("content_row") == null) ? "" : (string)query.Element("content_row").Attribute("last_name").Value, 
       From = (query.Element("content_row") == null) ? "" : (string)query.Element("content_row").Attribute("from").Value, 
       AboutSpeaker = (query.Element("content_row") == null) ? "" : (string)query.Element("content_row").Attribute("about_speaker").Value 
      }; 

listDag1.ItemsSource = data; 
+1

xdoc.Descendants(“content_row”)为什么你不使用这 – 2012-01-11 05:59:09

+0

如果我使用这个,然后显示空异常错误。 – Shri 2012-01-11 07:49:06

回答

1

正如评论中指出的那样,你是误解如何使用Linq2xml。您不应该在查询中包含根元素。因此,您的查询应该看起来有点像这样:

var data = 
     from query in xdoc.Descendants("content_row") 
     select new ContentItems 
     { 
      FirstName = query.Element("content_row").Attribute("first_name").Value, 
      LastName = query.Element("content_row").Attribute("last_name").Value, 
      From = query.Element("content_row").Attribute("from").Value, 
      AboutSpeaker = query.Element("content_row").Attribute("about_speaker").Value 
     }; 

当然,在该属性缺失的情况下,你必须手动进行检查。

+0

我也用过这个,但得到空异常错误 – Shri 2012-01-11 14:32:39

+0

如果你不能处理,你应该阅读C#的基础知识。当你不明白我们告诉你的时候,我们无法帮助你。 – 2012-01-11 18:20:00