首页 |缤纷校园 |心理援助 |英语世界 |公务员 |考研天地 |资格考试 |电脑认证 |免费论文 |实用文档 |求职就业 |论坛 |网络课堂 |留言版
 电脑认证首页     考试专题 考试提醒 计算机等级考试 计算机认证水平考试 IT认证 论坛
 最近更新
· [学习辅导]用C#把文件转换为XML
· [学习辅导]C#中用API实现MP3等音频文…
· [学习辅导]C#实现的18位身份证格式验…
· [学习辅导]对C#泛型中的new()约束的一…
· [学习辅导]C语言中数组和指针的互操作
· [学习辅导]C/C++数组名与指针区别深入…
· [备考指南]综合布线超五类网线和六类…
· [学习辅导]如何才能修改系统表,比如…
· [学习辅导]怎样使用一个查询获得数据…
· [学习辅导]为什么打开表有时也会提示…
 精品课程
· [精品课程推荐]08年投资项目管理师考…
· [精品课程推荐]08年职称日语考试辅导…
· [精品课程推荐]08年环境影响评价师辅…
· [精品课程推荐]08年质量资格考试辅导…
· [精品课程推荐]08年会计职称辅导报精…
· [精品课程推荐]08年建筑师考试辅导京…
· [精品课程推荐]08职称英语考试辅导王…
· [精品课程推荐]08年咨询工程师考试名…
· [精品课程推荐]08年监理工程师考试辅…
· [精品课程推荐]经济师考试网上辅导报…
 考试动态
· [二级考试动态]重庆:计算机等级考试考点…
· [二级考试动态]2008年计算机等级考试时间…
· [二级考试动态]上海:2008年上半年全国计…
· [二级考试动态]北京:2007年9月计算机等级…
· [二级考试动态]2007年12月全国计算机职业…
· [二级考试动态]青岛:2008年上半年计算机…
· [二级考试动态]宁夏:2007年9月计算机等级…
· [二级考试动态]北京地区计算机等级考试10…
· [二级考试动态]北京:07年下半年计算机等…
· [二级考试动态]2008年4月全国计算机等级考…
 试题下载
· [试题下载]2007年计算机等级考试二级…
· [试题下载]2007年9月计算机等级考试二…
· [试题下载]2007年9月二级VB试题答案
· [试题下载]2007年9月计算机二级VB模拟…
· [试题下载]2007年9月计算机二级VB模拟…
· [试题下载]2007年9月计算机二级VF模拟…
· [试题下载]2007年9月计算机二级VB模拟…
· [试题下载]2007年9月计算机等级考试二…
· [试题下载]VC++中利用/GS开关防止缓冲…
· [试题下载]2007年4月计算机等级考试二…
 学习辅导
· [学习辅导]用C#把文件转换为XML
· [学习辅导]C#中用API实现MP3等音频文…
· [学习辅导]C#实现的18位身份证格式验…
· [学习辅导]对C#泛型中的new()约束的一…
· [学习辅导]C语言中数组和指针的互操作
· [学习辅导]C/C++数组名与指针区别深入…
· [学习辅导]如何才能修改系统表,比如…
· [学习辅导]怎样使用一个查询获得数据…
· [学习辅导]为什么打开表有时也会提示…
· [学习辅导]如何隐藏/显示某个表或者其…
 

用C#把文件转换为XML

文章录入:editor002    责任编辑:editor002   2008-5-4 9:45:34  来源:本站原创  点击数:
 
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 );
  }

  #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("加载成功");
   }

  }

 }
}

查找更多考试信息请登陆:考资网(www.kaozi.com)

 

  • 上一个文章:

  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    关于本站 - 广告服务 - 站内导航 - 网站声明 - 友情链接 - 联系我们
    Copyright©2003-2008 www.dastu.com, All Rights Reserved.

    心语心愿科技(北京)有限责任公司 版权所有

    鄂ICP备05000022号