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)
    {
        ...
    }

我喜欢将逗号分隔的键值与逗号分隔的Rows 值进行 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();
}

转换为二维数组或处理更复杂的规则留作练习。

于 2012-12-19T22:05:36.717 回答