Привязать веб-атрибуты XML в списке - PullRequest
0 голосов
/ 11 января 2012

Я связываю веб-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 Ответ

1 голос
/ 11 января 2012

Как указано в комментариях, вы неправильно понимаете, как использовать 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
        };

Конечно, в случае, если атрибут отсутствует, вам придется проверить его вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...