2012-02-07 4 views
0

Jusqu'à présent, j'ai écrit un code pour télécharger un fichier à partir du serveur ftp, puis en utilisant une tierce partie dll (informations sur les médias) pour obtenir les détails des métadonnées sur le fichier. Jusqu'à ce que ce soit bon, maintenant j'essaie de générer le fichier xml basé sur ma sortie, j'ai vu de grands exemples ici How can I build XML in C#? pour générer xml mais mon scénario est un peu différent, c'est pourquoi j'ai créé ce fil.générer le fichier xml à partir de la sortie

ci-dessous est le code pour obtenir les propriétés valeur du fichier 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}"; 
    } 
} 
base de

sur le fichier test.jpg il, TechMeta.PutMessage (fichier, message); valeur du message sont

{Width: 1024 
    Height: 576 
    FileSize: 84845 
    FileFormat: JPEG 
    Resolution: 8 
    } 

Maintenant essaie de générer un fichier xml en fonction de la valeur comme ci-dessous, plus important encore je essaie de joindre basé sur le nouveau fichier comme ci-dessous

<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> 

Toute suggestion s'il vous plaît

+0

Qu'avez-vous essayé? Nous ne sommes pas ici pour écrire votre code pour vous. Si vous êtes coincé, nous pouvons vous aider, mais vous devez nous dire quel est exactement votre problème. – svick

+0

@svick ne m'attends pas à ce que quelqu'un écrive un code pour moi, j'attends quelqu'un pour suggérer le meilleur ou le meilleur moyen de générer xml depuis ma sortie, par exemple générer un fichier xsd ou utiliser xmldocument etc. bcoz ne pas utiliser beaucoup ou expert en xml C'est pourquoi j'ai jeté cette question ici – Usher

+0

Vous demandez une "meilleure façon", mais vous ne dites pas mieux que quoi. Essayez-le d'abord vous-même et demandez-nous si cela ne fonctionne pas ou si vous pensez qu'il doit y avoir un meilleur moyen. De plus, votre XML n'est pas valide, vous ne fermez jamais les éléments '' et le XML semble avoir plusieurs éléments racine. – svick

Répondre

1

Vous voudrez peut-être jeter un oeil dans la classe XmlWriter.

Modifier: Lien incorrect, corrigé maintenant.

+0

Woops avait le mauvais lien! – warbio

Questions connexes