就这么简单
XmlNode node = doc.SelectSingleNode(ChildPath);
var nextNode = node.NextSibling();
鉴于您修复了 xml,所以它当然是有效的。
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]}");
}
}