如何使用 C# 库在 XML 文件中从一行移动到另一行

问题描述 投票:0回答:2
c# xml parent-child
2个回答
0
投票

就这么简单

XmlNode node = doc.SelectSingleNode(ChildPath);
var nextNode = node.NextSibling();

鉴于您修复了 xml,所以它当然是有效的。


0
投票

XML 属性不以逗号分隔。删除逗号。

<Parent>
    <Child AttrName11="a" AttrName12="b" AttrName13="c" />
    <Child AttrName21="d" AttrName22="e" AttrName23="f" />
    <Child AttrName31="g" AttrName32="i" AttrName33="j" />
</Parent>

我会将这些值读入二维数组(矩阵)。推理起来更容易,而不必同时担心解析 XML 的细节。

string[,] matrix = new string[3, 3];
for (int i = 0; i < 3; i++) {
    var row = doc.Root.Elements().ElementAt(i);
    for (int j = 0; j < 3; j++) {
        var col = row.Attributes().ElementAt(j);
        matrix[i, j] = col.Value;
    }
}

如果您使用其他属性,则通过索引访问属性可能会失败。但您也可以通过名称访问属性:

matrix[i, j] = row.Attribute($"AttrName{i + 1}{j + 1}")?.Value;

我们可以通过以下方式测试我们是否读取了正确的数据:

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        Console.Write(matrix[i, j] + " ");
    }
    Console.WriteLine();
}

我们可以像这样搜索对角元素:

// Searching for "e" diagonal element:
for (int i = 0; i < 3; i++) {
    if (matrix[i, i] == "e") {
        Console.WriteLine($"m[{i},{i}]= {matrix[i, i]}");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.