これまでは、ftpサーバーからファイルをダウンロードし、サードパーティ製のdll(メディア情報)を使用してファイルに関するメタデータの詳細を取得するコードを作成しました。これまでは、出力に基づいてxmlファイルを生成しようとしていましたが、ここで大きな例が見られました。How can I build XML in C#?はxmlを生成しますが、私のシナリオはちょっと違っています。以下出力からxmlファイルを生成
はTechMeta.PutMessage(ファイル、メッセージ)、test.jpgファイルにJPGファイルのプロパティ値を取得するためのコード
static void Main(string[] args)
{
try
{
string file = "test.jpg";
FtpWebRequest reqFTP;
string ftpserverIp = "1.0.0.1";
string fileName = @"c:\downloadDir\" + file;
FileInfo downloadFile = new FileInfo(fileName);
FileStream outputStream = new FileStream(fileName, FileMode.Append);
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpserverIp + "/" + file));
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.KeepAlive = false;
reqFTP.Timeout = -1;
reqFTP.UsePassive = true;
reqFTP.Credentials = new NetworkCredential("sh", "SE");
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
// reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
int bufferSize = 4096;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
Console.WriteLine("Connected: Downloading File");
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
Console.WriteLine(readCount.ToString());
}
ftpStream.Close();
outputStream.Close();
response.Close();
Console.WriteLine("Downloading Complete");
var message = new StringBuilder();
ConsoleApplication2.Program TechMeta = new ConsoleApplication2.Program();
TechMeta.PutMessage(file, message);
Console.WriteLine(message);
}
catch (Exception ex)
{
Console.Write(ex);
}
}
private void PutMessage(string filename, StringBuilder message)
{
//Check the file is video or Image file here
string extension =".jpg";
bool b;
if (b = filename.Contains(extension))
{
HowToUse_Dll.ImageInterrogator imageInterrogator = new HowToUse_Dll.ImageInterrogator();
imageInterrogator.LoadFile(filename);
message.AppendFormat(messageFormat, "Width", imageInterrogator.GetWidth(), Environment.NewLine);
message.AppendFormat(messageFormat, "Height", imageInterrogator.GetHeight(), Environment.NewLine);
message.AppendFormat(messageFormat, "FileSize", imageInterrogator.GetFileSize(), Environment.NewLine);
message.AppendFormat(messageFormat, "FileFormat", imageInterrogator.GetFileFormat(), Environment.NewLine);
message.AppendFormat(messageFormat, "Resolution", imageInterrogator.GetResolution(), Environment.NewLine);
}
else
{
HowToUse_Dll.VideoInterrogator videoInterrogator = new HowToUse_Dll.VideoInterrogator();
videoInterrogator.LoadFile(filename);
message.AppendFormat(messageFormat, "FileSize", videoInterrogator.GetFileSize(), Environment.NewLine);
message.AppendFormat(messageFormat, "Duration", videoInterrogator.GetDuration(), Environment.NewLine);
message.AppendFormat(messageFormat, "AspectRatio", videoInterrogator.GetAspectRatio(), Environment.NewLine);
message.AppendFormat(messageFormat, "GetAspectRatio", videoInterrogator.GetAspectRatio(), Environment.NewLine);
message.AppendFormat(messageFormat, "BitRate", videoInterrogator.GetBitRate(), Environment.NewLine);
message.AppendFormat(messageFormat, "Format", videoInterrogator.GetFormat(), Environment.NewLine);
message.AppendFormat(messageFormat, "VideoCoder", videoInterrogator.GetVideoCoder(), Environment.NewLine);
message.AppendFormat(messageFormat, "Redirector", videoInterrogator.GetRedirector(), Environment.NewLine);
message.AppendFormat(messageFormat, "TargetPlayback", videoInterrogator.GetTargetPlayback(), Environment.NewLine);
}
}
public string messageFormat
{
get
{
return "{0}: {1}{2}";
}
}
塩基です。 メッセージ値は
{Width: 1024
Height: 576
FileSize: 84845
FileFormat: JPEG
Resolution: 8
}
は今すぐ下記のような値に基づいて、XMLファイルを生成しようとしていますが、もっと重要なのは
<image Name="test.jpg">
<width>1024</width>
<height>576</height>
<file-Size>84845</file-Size>
<resolution>8</resolution>
<image Name="test1.jpg">
<width>1024</width>
<height>576</height>
<file-Size>84845</file-Size>
<resolution>8</resolution>
以下のどれ提案のような新しいファイルに基づいて
をしてください追加しようとしています
何を試しましたか?私たちはあなたのコードを書くためのものではありません。あなたが立ち往生した場合、私たちはあなたを助けることができますが、正確にあなたの問題が何であるか教えてください。 – svick
@svick私のためにコードを書くことを期待していない人がいます。私は自分の出力からxmlを生成するために、より良い、あるいは最良の方法を提案しています。例えばxsdファイルを生成するか、xmldocumentなどを使用します。それが私がここでこの質問を投げた理由です。 – Usher
あなたは「より良い方法」を求めていますが、あなたは何よりも優れているとは言いません。最初に自分自身で試してみて、それがうまくいかない場合や、より良い方法が必要と思われる場合は、私たちにお尋ねください。また、あなたのXMLは有効ではありません。あなたは ''要素を決して閉じず、XMLは複数のルート要素を持つようです。 –
svick