私はこの例のxmlを持っています:
<tr:secmain>
<fn:footnote num ="1">
<fn:footnote num ="2">
<fn:footnote num ="3">
<fn:footnote num ="3">
<fn:footnote num ="5">
</tr:secmain>
<tr:secmain>
<fn:footnote num ="1">
<fn:footnote num ="2">
<fn:footnote num ="3">
<fn:footnote num ="4">
<fn:footnote num ="6">
</tr:secmain>
すべての要素について、すべての脚注が正しいかどうかを確認する必要があり、エラーが見つかった場合は、この行が表示される場所を確認する必要があります。この例では、行エラーは行 5 と行 13 です。
現在、Linq を使用してエラーをチェックしています。すべての数字を他のテキスト ファイルに抽出し、この方法で間違った行をチェックしています。
int[] IncorrectLines(string filename)
{
// Parse the file into an array of ints, 10* each version number.
var ints = File.ReadLines(filename)
.Select(s => (int)(10 * decimal.Parse(s))).ToArray();
// Pair each number up with the previous one.
var pairs = ints
.Zip(ints.Skip(1), (p, c) => new { Current = c, Previous = p });
// Include the line numbers
var withLineNos = pairs
.Select((pair, index) => new { Pair = pair, LineNo = index + 2 });
// Only keep incorrect lines
var incorrect = withLineNos.Where(o =>
o.Pair.Current - 1 != o.Pair.Previous && // not a simple increment
o.Pair.Current % 10 != 0); // not a whole new version
// Return the line numbers; could return (double)o.Pair.Current / 10 instead.
return incorrect.Select(o => o.LineNo).ToArray();
}
しかし、すべての tr:secmain のシーケンスを確認する必要があるため、現在問題が発生しています
アドバイスありがとうございます。:)
編集:
脚注は次の順序にすることができます: (単なるサンプル)
1
2
2.1
2.2
2.3
3
3.1
3.2
3.3
3.4
3.5
3.7
4
5
etc.