ThroughoutCMS技术共享系列(2):XML访问类
上次把数据库访问类共享出来了,几个同事网上感慨了一番,真的没有想到我还保留5年前的代码,我说,代码本来就是应该被阅读和研究的,代码同样具有思想和情节,这就是在一穷二白的情况下的历史和轨迹。配置管理同样也是一位尽职的史官。
总结一下,上次给出的代码虽然可以直接运行和使用,的确存在大量可以改进的地方,现在列出部分意见:
1、不支持多种数据库连接(例如Oracle、DB2、Access,mySql等);
2、代码封装不彻底,面向对象,起码应该采取工厂方法。
3、不支持多线程,没有连接池的概念,同一时间只能建立一个连接;
4、对于事务处理考虑不够;
5、没有考虑到会话;
6、代码本身性能、语法方面还可以存在大量改进的地方。
......
一下子给出好几十条,看来还是有人研究了。这里就不在展开了,有机会专门开个专题讨论一下数据访问层的设计问题。
今天给出ThroughoutCMS技术共享系列第二章:XML访问类,恐怕这也是我们经常用到的一个关键基础类库,无论采用.net还是采用java、VC、python,只要是上规模的项目,都缺少不了它,关于为什么要采用XML的问题,这里就不在详细讨论了,网上资料有的是。
下面的代码同样是一个产品中的真实文件,只不过是第一版的,直接采用dom的思想,缺少SAX的操作,功能小而全,涉及到XML文件读取和节点操作,同样那句话,如果要用,可以直接拷贝,如果教学,非常实用。
// 本文件包含了XML数据访问的通用函数.
using System ;
using System.Globalization ;
using System.Xml ;
namespace CMS.Lib
{
public class XML
{
private XML(){}
/// <summary>
/// 加载XML文档,返回XmlDocument对象
/// </summary>
/// <param name="sXMLFile">xml文件</param>
/// <returns>加载的XmlDocument对象</returns>
public static XmlDocument LoadXML(string sXMLFile)
{
XmlDocument objXmlDoc=new XmlDocument();
 
相关文档:
这个例子要把bookstore.xml文件增加一条book记录
1 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="love" ISBN="1234123">
<title>who am i </title>
<author>who</author>
  ......
序列化是将对象转换成易于传输的形式的过程。例如,可以序列化对象,并使用 HTTP 通过 Internet 在客户端和服务器之间进行传输。另一方面,反序列化在流中重新构建对象。
XML 序列化只将对象的公共字段和属性值序列化为 XML 流。XML 序列化不包括类型信息。例如,如果 Library 命名空间中存在 Book 对象,则不能保证将它反 ......
XML 序列化可以采用从简单到复杂的多种形式。例如,可以序列化只包含公共字段和公共属性的类,如 XML 序列化简介中所示。下面的代码示例讨论各种高级方案,包括如何使用 XML 序列化生成符合特定 XML 架构 (XSD) 文档的 XML 流。
序列化数据集
除了序列化公共类的实例外,还可序列化 DataSet 的实例,如下面的代码示例所示 ......
Struts 2 使用XML文件校验例题
在这个例子中我们将了解到怎么样通过XML文件来进行校验。XML校验文件必须以"动作(action)类-Validation.xml"的形式命名。在这个例子中,动作(action)类名是"Login.java",XML文件名是"Login-Validation.xml"。
Login-validation.xml的文件内容如下:
<!DOCTYPE validators PUBLIC "-//O ......