1

この xml を解析しようとしていて、名前と説明を正常に取得できますが、画像をまとめるのは難しいです。別々のコード解析はどちらも機能しますが、1 つの解析を実行して、すべてを 1 つのリストボックスにバインドできるようにしたいと考えています。

xmlは次のようになります

<stickers>
    <sticker>
        <imageData>
            <baseImageUrl> ... want this  </baseImageUrl>
            <sizes>
                <size>  don't care about this </size>
            </size>
            <imageUrlSuffix> ..want this </imageUrlSuffix>
        </imageData>
        <description>.... want this </description>
        <name>  --want this </name>
    <sticker>
<stickers>

私のコードは両方で動作しますが、別々に動作します。これを 1 つの解析に結合するにはどうすればよいですか...

XDocument streamFeed = XDocument.Load(new StringReader(response.Content));
var imagedata = from query in streamFeed.Descendants("sticker").Elements("imageData")
    select new Stickers
    {
        image = (string)query.Element("baseImageUrl") + "huge" + (string)query.Element("imageUrlSuffix"),
    };


var data = from query in streamFeed.Descendants("sticker")
    select new Stickers
    {
        name = (string)query.Element("name"),
        description = (string)query.Element("description"),   
    };

stickersListBox.ItemsSource = imagedata.Union(data);

データはリストボックスに表示されますが、説明の上にステッカーが表示され、横には並べられません。

ありがとう


以下の Thomas のおかげで、次のコードは機能しますが、一部のユーザー プロファイルで Null 参照例外が発生します (明らかにデータを持つ自分のプロファイルを含む)。

XDocument streamFeed = XDocument.Load(new StringReader(response.Content));

                    var query =
                        from sticker in streamFeed.Root.Descendants("sticker")
                        let imageData = sticker.Element("imageData")
                        select new Stickers
                        {
                            name = (string)sticker.Element("name"),
                            description = (string)sticker.Element("description"),
                            image = (string)imageData.Element("baseImageUrl") + "huge" + (string)imageData.Element("imageUrlSuffix")
                        };

                    stickersListBox.ItemsSource = query;
4

1 に答える 1

0

私が質問を正しく理解していれば、これはあなたが望むことをするはずです:

XDocument streamFeed = XDocument.Load(new StringReader(response.Content));
var query =
    from sticker in streamFeed.Root.Elements("sticker")
    let imageData = sticker.Element("imageData")
    select new Stickers
    {
        name = (string)sticker.Element("name"),
        description = (string)sticker.Element("description"),   
        image = (string)imageData.Element("baseImageUrl") + "huge" + (string)imageData.Element("imageUrlSuffix")
    };

stickersListBox.ItemsSource = query;
于 2012-07-16T00:08:07.733 に答える