2012-02-07 22 views
0

これまでは、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> 

以下のどれ提案のような新しいファイルに基づいて

をしてください追加しようとしています
+0

何を試しましたか?私たちはあなたのコードを書くためのものではありません。あなたが立ち往生した場合、私たちはあなたを助けることができますが、正確にあなたの問題が何であるか教えてください。 – svick

+0

@svick私のためにコードを書くことを期待していない人がいます。私は自分の出力からxmlを生成するために、より良い、あるいは最良の方法を提案しています。例えばxsdファイルを生成するか、xmldocumentなどを使用します。それが私がここでこの質問を投げた理由です。 – Usher

+0

あなたは「より良い方法」を求めていますが、あなたは何よりも優れているとは言いません。最初に自分自身で試してみて、それがうまくいかない場合や、より良い方法が必要と思われる場合は、私たちにお尋ねください。また、あなたのXMLは有効ではありません。あなたは ''要素を決して閉じず、XMLは複数のルート要素を持つようです。 – svick

答えて

1

クラスXmlWriterを調べるとよいでしょう。

編集:間違ったリンク、今修正されました。

+0

Woopsのリンクが間違っていた! – warbio

関連する問題