首先我们知道或不知道 利用XPathDocument对象Create出来的XpathNavigator是无法存储的,只能是Xmldocument对象Create出来的..
最终目的:1至N个XML文档 只需要一个方法名--查找表达式--参数?-- 执行指定命令
要封装一个比较简单的类 还是需要下点功夫的...
先分析一下
第一步无非就是加载 XML 文档,有了文档才能操作...
第二步通过XMLdocument来创建一个游标模型(XPathNavigator)
第三步 开始封装 增删改查....
其实这里的 第一步 和 第二步 用一个方法就行了,那就是初始化,试想一下 如果我操作的不知是一个XML文档 而是多个怎么办?
你一定会想到或不一定会想到,那就是用键值对儿~~~ 恩 就是泛型的Dictionary,下面我用了两个键值对儿~!
键值对1:文档(集合)控制器 Dictionary<String,XmlDocument> 用来提供创建游标模型 及对文档的IO操作
键值对2:游标控制器 Dictionary<String,XPathNavigator> 文档控制器创建的游标模型
代码如果
//文档控制器
static Dictionary<String, XmlDocument> DomCollection;
//游标控制器
static Dictionary<String, XPathNavigator> navigator;
//初始化方法 //这里的参数也是一个键值对 稍后解释
public static void InitData(Dictionary<String,String> collection)
{
if (DomCollection == null)
DomCollection = new Dictionary<string, XmlDocument>();
if (navigator == null)
navigator = new Dictionary<string, XPathNavigator>();
try
{
//循环传进来的键值对
foreach (KeyValuePair<String, String> k in collection)
{
// 如果已经存在不再继续
if (DomCollection.ContainsKey(k.Key)) continue;
// 否则 实例XMLdocument 并加载传入键值对当前的值
XmlDocument xml = new XmlDocument();
// 值就是一个路径
xml.Load(k.Value);
//创建游标模型控制器
XPathNavigator nav = xml.CreateNavigator();
//这里文档控制器 和游标模型的键是一样的,看到这里为什么一样,
//你可以想象一下在使用的时候是什么样子的
DomCollection.Add(k.Key, xml);
navigator.Add(k.Key, nav);
}
}
catch (Exception ex)
{
throw new NotImplementedException(ex.Message);
}
}
//解释上面这个方法的传入参数 初始化 键值对 collection
//其实这个参数就是一个文档名 加文档路径的集合
//调用这个初始化方法 ,你只需要准备将你要操作的xml文档用键值对加进来就行了,如下
Dictionary<String, String> contents = new Dictionary<String, String>();
contents.Add("DOC1", HttpContext.Current.Server.MapPath("a.xml"));
contents.Add("DOC2", HttpContext.Current.Server.MapPath("b.xml"));
contents.Add("DOC3", HttpContext.Current.Server.MapPath("c.xml"));
contents.Add("DOC4", HttpContext.Current.Server.MapPath("d.xml"));
然后调用方法InitData(contents) 传入即可....
看到这你在回到到上面我写的方法再重新看一遍也许你已经知道怎么用了