1

やってみたけど取れなかった?ここにxmlファイルがあります

<Root>
    <Data>
        <Keys>Key1, key2, key3, key4</Keys>
        <FirstRow>Key1row1, Key2Row1, Key3Row1, Key4Row1</FirstRow>
        <SecondRow>Key1Row2, Key2Row2, Key3Row2, Key4Row2</SecondRow>
        <ThirdRow>Key1Row3, Key2Row3, Key2Row3, Key2Row3</ThirdRow>
        and so on .........
    </Data>
</Root>

Linq to XML を使用する必要があります:-

    var data = from d in xDoc.Root.Element("Data")
                              select d;
    foreach(var d in data)
    {
        ...
    }

コンマ区切りのキー値とコンマ区切りの行値の Md 配列マッピングが好きです。

Key1      key2        key3       key4
Key1row1  key2Row1    Key3Row1   Key4Row1
....
4

1 に答える 1

0

行の要素は(行われたように)反復できますがstring.Split、行の値自体を分解するには(またはより高度なパーサーが必要です)。次の例では、RowTextToValuesメソッドで実行されます。

以下は、いくつかのヒントを含むLINQPadの例 (「C# プログラム」として実行) です。

IEnumerable<string> RowTextToValues (string v) {
    return v.Split(new [] {", "}, StringSplitOptions.None);
}

XDocument TestDoc() {
    return XDocument.Parse(@"
    <Root>
        <Data>
            <Keys>Key1, key2, key3, key4</Keys>
            <FirstRow>Key1row1, Key2Row1, Key3Row1, Key4Row1</FirstRow>
            <SecondRow>Key1Row2, Key2Row2, Key3Row2, Key4Row2</SecondRow>
            <ThirdRow>Key1Row3, Key2Row3, Key2Row3, Key2Row3</ThirdRow>
        </Data>
    </Root>");
}

void Main()
{
    var dataNode = TestDoc().Root.Element("Data");

    // -> IEnumerable<XElement>
    var rows = dataNode.Elements();

    // -> IEnumerable<IEnumerable<string>>
    var res = rows
        .Select(r => RowTextToValues(r.Value));

    res.Dump();
}

2 次元配列への変換や、より複雑な規則の処理は演習として残されています。

于 2012-12-19T22:05:36.717 に答える