程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 用C#把文件轉換為XML的代碼

用C#把文件轉換為XML的代碼

編輯:關於C語言
using System; 
using System.Drawing; 
using System.Collections; 
using System.ComponentModel; 
using System.Windows.Forms; 
using System.IO; 
using System.XML;  
namespace MyWindows 

 /**//// <summary> 
 /// 這個示例演示如何把Office文件編碼為xml文件以及如何把生成的XML文件轉換成Office文件 
 /// 把文件轉換成XML格式,然後就可以用web服務,.Net Remoting,WinSock等傳送了(其中後兩者可以不轉換也可以傳送) 
 /// XML解決了在多層架構中數據傳輸的問題,比如說在客戶端可以用Web服務獲取服務器端的Office文件,修改後再回傳給服務器 
 /// 只要把文件轉換成xml格式,便有好多方案可以使用了,而XML具有平台無關性,你可以在服務端用.Net用發布web服務,然後客戶端用 
 /// Java寫一段applit小程序來處理發送過來的文件,當然我舉的例子幾乎沒有任何顯示意義,它卻給了我們不少的啟示. 
 /// 另外如果你的解決方案是基於多平台的,那麼他們之間的交互最好不要用遠程應用程序接口調用(RPC),應該盡量用基於文檔的交互, 
 /// 比如說.Net下的MSMQ,J2EE的JMQ. 
 ///  
 /// 示例中設計到好多的類,我並沒有在所有的地方做過多注釋,有不明白的地方請參閱MSDN,這是偶第一個Windows程序,有不對的地方 
 /// 歡迎各位指導  
 /// </summary> 
 public class Form1 : System.Windows.Forms.Form 
 { 

  /**//// <summary> 
  /// 聲明四個Button,一個OpenFileDialog,一個SaveFileDialog,以及兩個XMLDocument 
  /// </summary> 
  private System.Windows.Forms.Button button1; 
  private System.Windows.Forms.Button button2; 
  private System.Windows.Forms.OpenFileDialog openFileDialog1; 
  private System.Windows.Forms.SaveFileDialog saveFileDialog1; 
  private System.Windows.Forms.Button button3; 
  private System.Windows.Forms.Button button4; 
  private System.Xml.XmlDocument mXMLDoc; 
  private System.Xml.XMLDocument doc; 
  private System.ComponentModel.Container components = null; 

  public Form1() 
  { 
   // 
   // Windows 窗體設計器支持所必需的 
   // 
   InitializeComponent(); 

   // 
   // TODO: 在 InitializeComponent 調用後添加任何構造函數代碼 
   // 
  } 

  /**//// <summary> 
  /// 清理所有正在使用的資源。 
  /// </summary> 
  protected override void Dispose( bool disposing ) 
  { 
   if( disposing ) 
   { 
    if(components != null) 
    { 
     components.Dispose(); 
    } 
   } 
   base.Dispose( disposing ); 
  } 

  Windows 窗體設計器生成的代碼#region Windows 窗體設計器生成的代碼 
  /**//// <summary> 
  /// 設計器支持所需的方法 - 不要使用代碼編輯器修改 
  /// 此方法的內容。 
  /// </summary> 
  private void InitializeComponent() 
  { 
   this.button1 = new System.Windows.Forms.Button(); 
   this.button2 = new System.Windows.Forms.Button(); 
   this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); 
   this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); 
   this.button3 = new System.Windows.Forms.Button(); 
   this.button4 = new System.Windows.Forms.Button(); 
   this.SuspendLayout(); 
   //  
   // button1 
   //  
   this.button1.Location = new System.Drawing.Point(96, 32); 
   this.button1.Name = "button1"; 
   this.button1.TabIndex = 0; 
   this.button1.Text = "生成XML"; 
   this.button1.Click += new System.EventHandler(this.button1_Click); 
   //  
   // button2 
   //  
   this.button2.Location = new System.Drawing.Point(96, 80); 
   this.button2.Name = "button2"; 
   this.button2.TabIndex = 1; 
   this.button2.Text = "生成doc"; 
   this.button2.Click += new System.EventHandler(this.button2_Click); 
   //  
   // button3 
   //  
   this.button3.Location = new System.Drawing.Point(8, 32); 
   this.button3.Name = "button3"; 
   this.button3.TabIndex = 2; 
   this.button3.Text = "加載doc"; 
   this.button3.Click += new System.EventHandler(this.button3_Click); 
   //  
   // button4 
   //  
   this.button4.Location = new System.Drawing.Point(8, 80); 
   this.button4.Name = "button4"; 
   this.button4.TabIndex = 3; 
   this.button4.Text = "加載XML"; 
   this.button4.Click += new System.EventHandler(this.button4_Click); 
   //  
   // Form1 
   //  
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
   this.ClIEntSize = new System.Drawing.Size(184, 141); 
   this.Controls.Add(this.button4); 
   this.Controls.Add(this.button3); 
   this.Controls.Add(this.button2); 
   this.Controls.Add(this.button1); 
   this.Name = "Form1"; 
   this.Text = "Form1"; 
   this.ResumeLayout(false); 
   // 
   //手工注冊一下Load和Closed事件 
   // 
   this.Load += new System.EventHandler(this.Form1_Load); 
   this.Closed += new System.EventHandler(this.Form1_Closed); 

  } 
  #endregion 

  /**//// <summary> 
  /// 從這個入口啟動窗體  
  /// </summary> 
  static void Main() 
  { 
   Application.Run(new Form1()); 
  } 
  /**//// <summary> 
  /// 把加載的Office文件轉換為XML文件 
  /// </summary> 
  /// <param name="sender"></param> 
  /// <param name="e"></param> 
  private void button1_Click(object sender, System.EventArgs e) 
  {  
   saveFileDialog1.Filter = "xml 文件|*.XML";//設置打開對話框的文件過濾條件 
   saveFileDialog1.Title = "保存成 XML 文件";//設置打開對話框的標題 
   saveFileDialog1.FileName=""; 
   saveFileDialog1.ShowDialog();//打開對話框 

   if(saveFileDialog1.FileName != "")//檢測用戶是否輸入了保存文件名 
   { 
    mXmlDoc.Save(saveFileDialog1.FileName);//用私有對象mXmlDoc保存文件,mXMLDoc在前面聲明過 
    MessageBox.Show("保存成功"); 
   }  
  } 

  /**//// <summary> 
  /// 把加載的XML文件轉換為Office文件 
  /// </summary> 
  /// <param name="sender"></param> 
  /// <param name="e"></param> 
  private void button2_Click(object sender, System.EventArgs e) 
  { 
   //從私有對象dox裡選取me節點,這裡的一些對XML對象的操作詳細說明可以參考msdn以獲取更多信息
   XMLNode node=doc.DocumentElement .SelectSingleNode("me") ; 
   XmlElement ele=(XmlElement)node;//獲取一個XML元素 
   string pic=ele.GetAttribute ("aa");//獲取ele元素的aa屬性並報訊在一個臨時字符串變量pic 

   byte[] bytes=Convert.FromBase64String (pic);//聲明一個byte[]用來存放Base64解碼轉換過來的數據流 
   
   //從保存對話框裡獲取文件保存地址 
   saveFileDialog1.Filter = "Office Documents(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.PPT"; 
   saveFileDialog1.Title = "保存成 Office 文件"; 
   saveFileDialog1.FileName=""; 
   saveFileDialog1.ShowDialog(); 

   if(saveFileDialog1.FileName != "") 
   { 
    //創建文件流並保存 
    FileStream outfile=new System.IO .FileStream (saveFileDialog1.FileName,System.IO.FileMode.CreateNew); 
    outfile.Write(bytes,0,(int)bytes.Length ); 
    MessageBox.Show("保存成功"); 
   } 

  } 

  /**//// <summary> 
  /// 加載窗口時的一些初始化行為 
  /// </summary> 
  /// <param name="sender"></param> 
  /// <param name="e"></param> 
  public void Form1_Load(object sender, System.EventArgs e) 
  { 
   MessageBox.Show("歡迎使用蛙蛙牌文檔轉換器"); 
  } 
  /**//// <summary> 
  /// 卸載窗體時把臨時變量全部釋放 
  /// </summary> 
  /// <param name="sender"></param> 
  /// <param name="e"></param> 
  public void Form1_Closed(object sender, System.EventArgs e) 
  { 
   mXMLDoc=null; 
   doc=null; 
  } 
  /**//// <summary> 
  /// 加載Office文件並編碼序列花為一個XMLDocument變量 
  /// </summary> 
  /// <param name="sender"></param> 
  /// <param name="e"></param> 
  private void button3_Click(object sender, System.EventArgs e) 
  { 
   string strFileName; 
   openFileDialog1.Filter = "Office Documents(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.PPT" ; 
   openFileDialog1.FilterIndex = 1; 
   openFileDialog1.FileName = ""; 
   openFileDialog1.ShowDialog(); 
   strFileName = openFileDialog1.FileName; 
   if(strFileName.Length != 0) 
   { 
    System.IO.FileStream inFile=new FileStream(strFileName,System.IO.FileMode.Open,System.IO.FileAccess.Read); 
    byte[] binaryData=new byte [inFile.Length]; 
    inFile.Read(binaryData, 0,(int)inFile.Length); 
    string mStr=Convert.ToBase64String(binaryData); 
    string hh=mStr; 
    mXmlDoc=new System.Xml.XMLDocument();  
  
    mStr=string.Format ("<wawa><me aa=\"{0}\"/></wawa>",mStr); 
    mXmlDoc.LoadXML( mStr); 
    MessageBox.Show("加載成功"); 
   }  

  } 
  /**//// <summary> 
  /// 加載XML文件到私有對象dox 
  /// </summary> 
  /// <param name="sender"></param> 
  /// <param name="e"></param> 
  private void button4_Click(object sender, System.EventArgs e) 
  { 
   string strFileName; 
   openFileDialog1.Filter = "xml 文件|*.XML" ; 
   openFileDialog1.FilterIndex = 1; 
   openFileDialog1.FileName = ""; 
   openFileDialog1.ShowDialog(); 
   strFileName = openFileDialog1.FileName; 
   //If the user does not cancel, open the document. 
   if(strFileName.Length != 0) 
   { 
    doc=new XMLDocument(); 
    doc.Load(strFileName); 
    MessageBox.Show("加載成功"); 
   } 

  } 

 } 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved