1

LinqtoXMLを使用してこのxmlを読み取ろうとしています

<Root>
    <shelves>
        <bookNumber>12</bookNumber>
        <coverType unit="H">soft</coverType>
        <pages>100</pages>
        <Weight units="lb">1.2</Weight>
        <chapter sample="1">example 1</<chapter>
        <chapter sample="2">example 2</<chapter>
        <chapter sample="3">example 3</<chapter>
        <chapter sample="4">example 4</<chapter>
        <chapter sample="5">example 5</<chapter>
        <chapter sample="6">example 6</<chapter>
        <chapter sample="7">example 7</<chapter>
        <chapter .................</chapter>
        <chapter .................</chapter>
        <chapter .................</chapter>
        <chapter .................</chapter>
        <chapter .................</chapter>
        ..............
    </shelves>
</Root>

それが私が試しているコードです:-。しかし、どのようにしてすべての要素「章」の値を読み取るのでしょうか。

var book = from b in xml.Root.Elements("shelves")
                             select b;
    foreach (var s in book)
    {
        booknumber = s.Element("bookNumber").Value,
        covertype = s.Element("bookNumber").Value,
        coverTypeUnit = s.Element("bookNumber").Attribute("unit").Value,
        ...........
        chapter = s.Element("bookNumber").Value ????
    }
4

2 に答える 2

2

次のリンクが役立つ場合があります。

linq-to-read-xml

101 の LINQ サンプル

于 2012-12-18T15:26:18.010 に答える
1
var values = s.Elements("chapter").Select(n => n.Value).ToArray();

さらに、同じ要素 (booknumber) から何度も読み込んでいます。コードを確認することをお勧めします。

編集:属性も生成します:

s.Elements("chapter").
Select(n => new {Topic = n.Attribute("topic").Value, Value = n.Value}).
ToArray();
于 2012-12-18T15:26:08.683 に答える