分享

WriteXml类(C#)

 悟静 2013-01-09

using System;
using System.Web;
using System.Data;
using System.Text;
using System.Xml;
using System.IO;

namespace Baolee.GeneralMethod
{
 /// <summary>
 /// WriteXml 的摘要说明。
 /// </summary>
 public class WriteXml
 {
  /// <summary>
  /// 构造函数
  /// </summary>
  public WriteXml()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }
  /// <summary>
  /// 读取XML和XSD, 两文件同名如果两文件不同名,则参看LoadSignXML
  /// </summary>
  /// <param name="descDirectory"></param>
  /// <param name="fileName">文件名,不带扩展名</param>
  /// <returns></returns>
  public DataSet Load(string descDirectory, string fileName)
  {
   DataSet set = new DataSet();
   set.ReadXmlSchema(descDirectory + @"/" + fileName + ".xsd");
   set.ReadXml(descDirectory + @"/" + fileName + ".xml");
   return set;
  }

  /// <summary>
  /// 读取单一XML文件
  /// </summary>
  /// <param name="descDirectory"></param>
  /// <param name="fileName"></param>
  /// <returns></returns>
  public DataSet LoadSignXML(string descDirectory, string fileName)
  {
   XmlDataDocument document = new XmlDataDocument();
   document.DataSet.ReadXml(descDirectory + @"/" + fileName + ".xml");
   return document.DataSet;
  }

  /// <summary>
  /// 读取XML和XSD, 两文件不同名
  /// </summary>
  /// <param name="descDirectory"></param>
  /// <param name="xmlName"></param>
  /// <param name="xsdName"></param>
  /// <returns></returns>
  public DataSet LoadSignXML(string descDirectory, string xmlName, string xsdName)
  {
   XmlDataDocument document = new XmlDataDocument();
   document.DataSet.ReadXmlSchema(descDirectory + @"/" + xsdName + ".xsd");
   document.DataSet.ReadXml(descDirectory + @"/" + xmlName + ".xml");
   return document.DataSet;
  }

  /// <summary>
  /// 生成XML文件,UTF-8格式,带XSD
  /// </summary>
  /// <param name="descDirectory"></param>
  /// <param name="fileName"></param>
  /// <param name="ds"></param>
  public void Write(string descDirectory, string fileName, DataSet ds)
  {
   if (!Directory.Exists(descDirectory))
   {
    Directory.CreateDirectory(descDirectory);
   }
   ds.WriteXml(descDirectory + @"/" + fileName + ".xml");
   ds.WriteXmlSchema(descDirectory + @"/" + fileName + ".xsd");
  }

  /// <summary>
  /// 生成XML文件,GB2312格式,带XSD,XML文件无版本号,StreamWrite
  /// </summary>
  /// <param name="descDirectory"></param>
  /// <param name="fileName"></param>
  /// <param name="ds"></param>
  public void WriteGB2312(string descDirectory, string fileName, DataSet ds)
  {
   StreamWriter writer = new StreamWriter(descDirectory + @"/" + fileName + ".xml", false, Encoding.GetEncoding("GB2312"));
   ds.WriteXml(writer);
   ds.WriteXmlSchema(descDirectory + @"/" + fileName + ".xsd");
  }
  /// <summary>
  /// 生成XML文件,GB2312格式,无XSD,XmlDocument
  /// </summary>
  /// <param name="descDirectory"></param>
  /// <param name="fileName"></param>
  /// <param name="ds"></param>
  public void WriteWithDoc(string descDirectory, string fileName, DataSet ds)
  {
   XmlDocument document = new XmlDocument();
   document.LoadXml(ds.GetXml());
   ds.Clear();
   ds.Dispose();
   XmlDeclaration newChild = document.CreateXmlDeclaration("1.0", "GB2312", "yes");
   XmlElement refChild = document.DocumentElement;
   document.InsertBefore(newChild, refChild);
   document.Save(descDirectory + @"/" + fileName + ".xml");
  }

 }
}
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约