私はWebプログラミング(Visual Web DeveloperのC#)に不慣れで、C以外のプログラミングスキルも少し錆びています。
一部のセルがユーザー入力を求めるテーブルを作成しました。入力が行われると、入力がプロンプトに置き換わります。したがって、テーブルに注釈を付けることができるのは、ページに最初にアクセスした人だけです。後で、注釈付きのページを他の人が表示できるようにする必要があるため、最初に実行した後、プロンプトなしでページをロードする必要があります。これを行うために、私はユーザーを識別して、そのユーザーが編集可能なページを取得し、すべての編集がxmlファイルに保存され、別のユーザーがページを実行すると、テーブル設定がxmlファイルから読み戻されるようにします。編集の。
一貫してxmlファイルに書き込むのに問題があります。具体的には、ファイルにアクセスする複数のプロセスを作成することがあるようで、コードがファイルを更新しようとするとランタイム例外がスローされます。
ページの読み込みごとに新しいファイルを作成したくなかったので、静的クラスが最適だと思いました。コードは次のとおりです。
static class XMLReaderWriter
{
static String fileLocation = "D:\\WebApp\\dashboard.xml";
static XMLReaderWriter()
{
FileStream fs = File.Create(fileLocation);
if (File.Exists(fileLocation))
{
// The opening tag
writeToFile(fileLocation, "<Dashboard>\n");
}
else
{
Exception e = new Exception("Failed to create " + fileLocation);
throw e;
}
}
public static void writeXML(String xml)
{
if(File.Exists(fileLocation))
{
writeToFile(fileLocation, xml);
}
else
{
File.Create(fileLocation);
writeToFile(fileLocation, xml);
}
}
private static void writeToFile(String fileLocation, String xml)
{
StreamWriter sw = new StreamWriter(fileLocation, true);
sw.WriteLine(xml);
sw.Close();
sw.Dispose();
}
public static string readXML(String trendID)
{
StringBuilder result = new StringBuilder("");
if (File.Exists(fileLocation))
{
XDocument xDoc = XDocument.Load(fileLocation);
var image = from id in xDoc.Descendants(trendID) select new
{
source = id.Attribute("image").Value
};
foreach (var imageSource in image)
{
result.AppendLine(imageSource.source);
}
}
return result.ToString();
}
public static void done()
{
// The closing tag
writeToFile(fileLocation, "</Dashboard>");
}
}
ここで私はメソッドを呼び出しています:
XMLReaderWriter.writeXML("\t<trend id=\"" + trendID +"\">\n\t\t" + innerHTML + "\" />\n\t</trend>");
最後に、xmlファイルに終了タグを追加するための送信ボタンがあります。
<asp:Button runat="server" Text="Submit Changes" OnClick="Submit_Click" />
protected void Submit_Click(Object sender, EventArgs e)
{
XMLReaderWriter.done();
}
時々、すべてがうまく機能することがあります-私は不正な形式のxmlを生成しているようですが。しかし、ほとんどの場合、xmlファイルにアクセスするプロセスは複数あります。
アドバイスをいただければ幸いです。
よろしく。