0

So far i wrote a code to download a file from ftp server then using 3rd party dll (media info) to get the metadata details about the file. Until this am good,now am trying to generate the xml file based on my output ,i seen great examples here How can I build XML in C#? to generate xml but my scenario is little bit different,thats why i created this thread.

below is the code to get the properties value of jpg file

 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 on the test.jpg file it ,TechMeta.PutMessage(file, message); Message value are

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

Now am trying to generate xml file based on the value like below,the more importantly am trying to append based on new file like below

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

Any suggestion please

Community
  • 1
  • 1
Usher
  • 2,146
  • 9
  • 43
  • 81
  • What have you tried? We're not here to write your code for you. If you get stuck, we can help you, but you have to tell us what exactly is your problem. – svick Feb 07 '12 at 06:44
  • @svick am not expecting some one write a code for me,am expecting some one suggest better or best way to generate xml from my ouput,for eg generate xsd file or use xmldocument etc. bcoz am not used a lot or expert in xml.that's why i thrown this question here – Usher Feb 07 '12 at 07:08
  • You're asking for a "better way", but you don't say better than what. Try it first yourself and then ask us if it doesn't work or if you think there has to be a better way. Also, your XML isn't valid, you never close the `` elements and the XML seems to have multiple root elements. – svick Feb 07 '12 at 07:17
  • @svick thanks for your most help full comment. – Usher Feb 07 '12 at 09:55

1 Answers1

1

You might want to take a look into the class XmlWriter.

Edit: Wrong Link, fixed now.

warbio
  • 466
  • 5
  • 16