1
<namespace>
<root>
<node1>
<element 1>
<element 1>
</node1>
<node2>
<element 1>
<element 1>
</node2>
</root>

string stringContains = string.Empty;
                foreach(string line in File.ReadLines(Path))
                {
                    if(line.Contains("<Root>"))
                    {
                        stringContains = line.Replace("<Root>", "<Root>" + newelement.OuterXml);
                    }
                }
File.AppendAllText(Path, stringContains);

rootテキストを追加できるように、他のノードに置き換える必要があります。ただし、上記のコードは既存のテキストを追加しますstringContains

4

2 に答える 2

0

これを試して。

string stringContains = string.Empty;
var lines = File.ReadLines(Path);
foreach (var line in lines)
{
    if(line.Contains("<Root>"))
    {
        stringContains = line.Replace("<Root>", "<Root>" + newelement.OuterXml);
    }
}
File.WriteAllLines(Path, lines);

しかし、ファイルサイズが大きい場合、これは悪い習慣です。

于 2013-02-07T12:42:59.713 に答える
0

: ファイル内の 1 行だけを変更することはできません。すべてのコンテンツを読み取り、必要な部分を変更して、すべてのコンテンツを再度書き込む必要があります。

ファイル サイズ (GB の長さ) に関する情報によると、目的の動作を実現する唯一の方法は、新しいファイルを作成し、必要な行のみを変更して初期ファイルの内容を書き込むことです。

メモリの使用を最小限に抑えるために、(サンプルで示したように) 行ごとに処理を行う必要があります。

ただし、このアプローチでは、操作が完了するまで HDD に 2 倍のスペースが必要です (すべての操作が完了したら初期ファイルを削除すると仮定します)。

詳細について:この質問は、説明されたアプローチを達成する方法の完全なサンプルを提供します

于 2013-02-07T12:56:02.003 に答える