2

私は、修正したい非常に奇妙な癖のあるプロジェクトを継承しました。プロジェクトには、ユーザーのキーがデータに入力され、[送信] ボタンをクリックする Web フォームがあります。オフィスに SQL データベースがあることを考えると、各値がフォームから読み取られ、SQL テーブルに保存されることを期待していました。

しかし、そうではありません。一部の値は SQL に保存されますが、一部は保存されません。SQL に保存されていない値はどのように検索されますか? 簡単な答え: フォームの Javascript は、ユーザーが [送信] をクリックすると、フォーム全体のマークアップがサーバーに送信され、テキスト ファイルに保存されるように記述されています。次に、許可されたユーザーがユーザーがフォームにどのように入力したかを確認したい場合、マークアップがテキスト ファイルから取得され、ネットワーク経由でブラウザーに送信されます。

これは明らかに最善の方法ではありません。ディスク容量が無駄になり、簡単にクエリを実行できないからです。

そのため、Web フォームの今後のエントリが完全に SQL に保存されるようにコードを書き直しています。

それまでの間、SQL にインポートする必要がある HTML フラグメントを含むテキスト ファイルが何万もありました。私の考えは、ファイルを 1 つずつ解析し、フィールド値を SQL に保存するユーティリティ プログラムを作成することです。

これを行う最善の方法についてアドバイスを求めたいと思いました。通常、私は jQuery を使用して HTML から値を読み取りますが、非常に多くのファイルでこれを行う実用的な方法を知りません。Visual Studio 2010 も自由に使用できます。

このタスクを達成するには、どのツールとテクニックが最適でしょうか?

4

1 に答える 1

1

Windows マシンを使用している場合は、Windows スクリプト ホストを使用して、処理する必要があるファイルのリストを作成することから始めます。以下のコードを js ファイルにコピーし、その js ファイルを数千のファイルを含むディレクトリに保存し、Windows で js ファイルをダブルクリック (wscript で実行) すると、数千のファイルをリストする配列が保存されます。チェックする必要があります。

var io, here, fileToWrite, files;

io   =  new ActiveXObject('Scripting.FileSystemObject');
here = unescape(io.GetParentFolderName(WScript.ScriptFullName) + "\\");

fileToWrite = io.OpenTextFile(here + "\\filelist.js", 2, true);
fileToWrite.writeLine("filelist=[");

for (files = new Enumerator(io.GetFolder(here).files); !files.atEnd(); files.moveNext()) {
  var file = files.item();
  fileToWrite.writeLine('"' + file.Name + '",');
}

fileToWrite.writeLine("]");
fileToWrite.Close();
WScript.Echo("Process Complete - an array of files has been created");

次に、各ファイルを順番にロードし、通常の方法で情報を抽出し、FileSystemObject を使用してテキスト ファイルなどのより消費しやすい形式に保存する、ブラウザー ベースの jQuery スクリプトを作成できます。(これには IE を使用する必要があります。)

IE で FileSystemObject を作成しようとしてセキュリティ上の問題が発生した場合は、html ファイルの名前を拡張子「hta」に変更するだけで、これを行う権限を持つ html アプリケーションが作成されます。

于 2012-11-30T22:18:02.500 に答える