接上一篇文章 我把后面的增删改部分方法贴出来
//每一个方法 都需要一个Domname参数,这就是上篇中用键值对的原因,通过键来查找对应的控制器..
// 查找单个子节点
public static XPathNavigator querySingle(String domname,String expression)
{
try
{
return navigator[domname].SelectSingleNode(expression);
}
catch (Exception ex)
{
throw new NotImplementedException(ex.Message);
}
}
//查找节点集合
public static XPathNodeIterator queryNodes(String domname,String expression)
{
try
{
return navigator[domname].Select(expression);
}
catch (Exception ex)
{
throw new NotImplementedException(ex.Message);
}
}
//保存文档
public static void SaveDom(String domname)
{
try
{
DomCollection[domname].Save(Global.paths[domname]);
}
catch (Exception ex)
{
throw new NotImplementedException(ex.Message);
}
}
//增
public static void InsertSingle(String domname,String expression,String eles)
{
querySingle(domname, expression).InsertAfter(eles);
SaveDom(domname);
}
//改匹配 替换形式
public static void UpdateSingle(String domname, String expr, String eles)
{
querySingle(domname,expr).ReplaceSelf(eles);
SaveDom(domname);
}
//改匹配元素的值
public static void UpdateAttr(String domname, String expr, Object eles)
{
querySingle(domname, expr).SetTypedValue(eles);
SaveDom(domname);
}
//删除匹配元素
public static void DeleteSingle(String domname,String expr)
{
querySingle(domname, expr).DeleteSelf();
SaveDom(domname);
}
另外还可以继续封装 如改属性、移位.. 上面的去掉try catch也没多少代码了...
调用的时候只需要 className.方法名(参数)就行了