<返主目录 ▕▏C#基础库 WjwLibs: V5.0.5▕▏帮助文档 : XML 兼容e4x操作类 ▕▏ 编译日期: 2024-01-24▕▏ Email: wujwmail@163.com

〖XML 兼容e4x操作类〗 /wjw_cs.net/WjwLibs/wjw/WjwE4x.cs


类-1.名称: WjwE4x ▕→ XML处理WjwE4x类

命名空间: WjwLibs
所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
说明: 
    XML处理WjwE4x类
   继承XmlDocument,查询串语法同E4X(as程序员的利器)
   例:
   WjwE4x oE4x = new WjwE4x("<addr/>");
   var node = oE4x.AddXml("<city/>");
   oE4x.AddXml("<abc>123</abc>", node);
   oE4x.AddAttr("key=55,name=广州");
   oE4x.AddXml("<abc>456</abc>", node);
   oE4x.AddAttr("key=88,name=上海");
   WjwPhp.print("查询abc结点属性key=88的属性name的值");
   var val = oE4x.GetXml("city.abc.(@key=88).@name"); //或者: oE4x.GetXml("..abc.(@key=88).@name");
   WjwPhp.print("属性: name=" + val);
   WjwPhp.print("\n压缩打印city结点内容-------------------------");
   WjwPhp.print(oE4x.ToStr("city",true));
   WjwPhp.print("\n打印第二个abc结点内容-------------------------");
   WjwPhp.print(oE4x.ToStr("city.abc[1]"));
   WjwPhp.print("\n打印根文档内容---------------------------");
   WjwPhp.print(oE4x);
定义: 
    public class WjwE4x : XmlDocument, IDisposable

属性名称: DEBUG ▕→ 是否调试运行

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     是否调试运行
 定义: 
     public bool DEBUG = false;

属性名称: WinPathLog ▕→ windows端日志目录

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     windows端日志目录
 定义: 
     public string WinPathLog = @"D:\wjwlibs_cs\wjwe4x";

属性名称: UnixPathLog ▕→ Unix/Linux端日志目录

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     Unix/Linux端日志目录
 定义: 
     public string UnixPathLog = @"/var/wjwlibs_cs/wjwe4x";

属性名称: XmlFile ▕→ 当前(或要保存的)XML文件名

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
    当前(或要保存的)XML文件名
 定义: 
     public string XmlFile = "";

属性名称: rootLable ▕→ 根元素名称

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     根元素名称
 定义: 
     public string rootLable = "";

方法名称: WjwE4x ▕→ XML处理WjwE4x类构造器

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     XML处理WjwE4x类构造器
 参数: 
     oXstr : xml字符串或已确认存在的文件名及资源名,或XmlDocument
 定义: 
     public WjwE4x(object oXstr = null)

方法名称: SetOnlyRead ▕→ 设置文档为只读方式(不自动保存修改结果至源文件)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     设置文档为只读方式(不自动保存修改结果至源文件)
 定义: 
     public void SetOnlyRead()

方法名称: GetEncode ▕→ 获得文档编码(例如: utf-8)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     获得文档编码(例如: utf-8)
 返回: 
 定义: 
     public string GetEncode()

方法名称: SetEncode ▕→ 设置文档编码

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     设置文档编码
 参数: 
     en : 例如: utf-8
     ver : 版本号
 定义: 
     public void SetEncode(string en = "utf-8", string ver = "1.0")

方法名称: SaveTo ▕→ XML缓存保存至文件

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     XML缓存保存至文件
 参数: 
     filename : 文件名,缺省保存为装入的文件
 定义: 
     public void SaveTo(string filename = "")

方法名称: GetNote ▕→ 查结点下注释结点的内容

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     查结点下注释结点的内容
 参数: 
     element : 结点,null根结点
 返回: 
     注释数组
 定义: 
     public string[] GetNote(XmlElement element = null)

方法名称: ToStr ▕→ 手动串行化

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
  手动串行化
 参数: 
     enumerable : 元素结点对象或查询串,null为根结点,
     compress : 紧奏格式,缺省为false
 返回: 
     串行化xml
 定义: 
     public string ToStr(IEnumerable enumerable = null, bool compress = false)

方法名称: ToString ▕→ 重载ToString(),XmlDocument串行化

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     重载ToString(),XmlDocument串行化
 返回: 
     Xml字串
 定义: 
     public override string ToString()

方法名称: GetXmlNode ▕→ 解析xmlpath串获取一个结点句柄

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     解析xmlpath串获取一个结点句柄
 参数: 
     xmlpath : e4x查询表达式,缺省null当前句柄,"."为根句柄
 返回: 
     XmlElement句柄
 定义: 
     public XmlElement GetXmlNode(string xmlpath = null)

方法名称: GetXmlNodes ▕→ 解析xmlpath串获取一个结点句柄数组

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     解析xmlpath串获取一个结点句柄数组
 参数: 
     xmlpath : e4x查询表达式
 返回: 
     XmlElement句柄数组
 定义: 
     public XmlElement[] GetXmlNodes(string xmlpath)

方法名称: GetXml ▕→ 解析xmlpath串获取内容

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     解析xmlpath串获取内容
 参数: 
     xmlpath : e4x查询表达式
     reNull : 当结点或属性不存在时;reNull为true时返null,为false时返空字符
         可利用reNull为true时判断一个结点是否存在
 返回: 
     结果字串/无返null
 定义: 
     public string GetXml(string xmlpath, bool reNull = false)

方法名称: GetNodeValue ▕→ 得到结点值

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     得到结点值
 参数: 
     node : 结点
 返回: 
 定义: 
     public string GetNodeValue(XmlNode node)

方法名称: SetXml ▕→ 解析xmlpath串在指定的结点或属性设置字串值

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     解析xmlpath串在指定的结点或属性设置字串值
 参数: 
     xmlpath : xmlpath串,同e4x语法
     value : 字串值,对结点时可加入xml字串
     update : 是否更新文件,false时仅更新内存内容
 定义: 
     public bool SetXml(string xmlpath, string value, bool update = true)

方法名称: ItemType ▕→ 标识符元素类型

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     标识符元素类型
 返回: 
     类型号
 定义: 
     public int ItemType(string item)

方法名称: FindChildNode ▕→ 获得当前元素的孩子结点下的标识符元素句柄[0]

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     获得当前元素的孩子结点下的标识符元素句柄[0]
 参数: 
     label : 标识符
     node : 句柄
 返回: 
     句柄
 定义: 
     public XmlElement FindChildNode(string label, XmlElement node = null)

方法名称: Func_isEndNode ▕→ 判断是否为叶子结点,内置函数isEndNode()的实现

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     判断是否为叶子结点,内置函数isEndNode()的实现
 参数: 
     node : 句柄
 返回: 
     true/false
 定义: 
     public bool Func_isEndNode(XmlElement node)

方法名称: FindAnyNode ▕→ 获得当前元素的所有后代结点下的标识符元素句柄[0]

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     获得当前元素的所有后代结点下的标识符元素句柄[0]
 参数: 
     label : 标识符
     node : 
 返回: 
     句柄
 定义: 
     public XmlElement FindAnyNode(string label, XmlElement node = null)

方法名称: DelXml ▕→ 删除指定的结点(并写入关联XML文件中)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     删除指定的结点(并写入关联XML文件中)
 参数: 
     xmlpath : 元素结点对象或查询串
 返回: 
     元素的父结点/null
 定义: 
     public XmlElement DelXml(IEnumerable xmlpath)

方法名称: AddAttr ▕→ 增加或修改指定的结点的属性组

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     增加或修改指定的结点的属性组
 参数: 
     kvs : 属性键值对(字典数组或csvKV字串)
     xmlpath : 元素结点对象或查询串
 返回: 
 定义: 
     public XmlElement AddAttr(IEnumerable kvs, IEnumerable xmlpath = null)

方法名称: AddXml ▕→ 将一元素增加到指定的结点(并写入关联XML文件中)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     将一元素增加到指定的结点(并写入关联XML文件中)
 参数: 
     xmlstr : 要加入的XML串
     xmlpath : 元素结点对象或查询串
     setAdd : 添加子结点:
         '大于号':添加到子结点最后
         '小于号':添加到子结点最前
         '-':当前结点之前;
         '+':当前结点之后
 返回: 
     新结点
 定义: 
     public XmlElement AddXml(string xmlstr, IEnumerable xmlpath = null, string setAdd = null, bool isSave = true)

方法名称: ReName ▕→ 更换一个元素结点的名称

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     更换一个元素结点的名称
 参数: 
     element : 元素结点
     NewName : 新名称
 定义: 
     public void ReName(XmlElement element, string NewName)

方法名称: GetLogFile ▕→ 获得系统日志文件

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     获得系统日志文件
 参数: 
     isError : 是否是错误日志
 返回: 
     日志文件
 定义: 
     public string GetLogFile(bool isError = false)

方法名称: ToLog ▕→ 输出运行日志

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     输出运行日志
 参数: 
     mess : 消息
 定义: 
     public void ToLog(string mess)

方法名称: ToErr ▕→ 输出错误日志

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     输出错误日志
 参数: 
     mess : 消息
 定义: 
     public void ToErr(string mess)

方法名称: Node ▕→ 获得当前元素句柄(查询1)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     获得当前元素句柄(查询1)
 返回: 
     元素
 定义: 
     public XmlElement Node()

方法名称: Nodes ▕→ 获得当前元素句柄组(查询2)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     获得当前元素句柄组(查询2)
 返回: 
     元素组
 定义: 
     public XmlElement[] Nodes()

方法名称: Array ▕→ 取本结点的属性与值(查询3)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     取本结点的属性与值(查询3)
 参数: 
     xmlpath : 元素结点对象或查询串,缺省null为当前元素
 返回: 
     属性(前导符@)与值数组
 定义: 
     public Dictionary<string, string> Array(IEnumerable xmlpath = null)

方法名称: Node2kvs ▕→ 取本结点的属性与值(查询4)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     取本结点的属性与值(查询4)
 参数: 
     xmlpath : 元素结点对象或查询串,缺省null为当前元素
 返回: 
     属性(前导符@)与值数组
 定义: 
     public WjwKvs Node2kvs(IEnumerable xmlpath = null)

方法名称: Node2WjwE4x ▕→ 取本结点转为WjwE4x对象

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     取本结点转为WjwE4x对象
 参数: 
     xmlpath : 元素结点对象或查询串,缺省null为当前元素
 返回: 
     WjwE4x对象
 定义: 
     public WjwE4x Node2WjwE4x(IEnumerable xmlpath = null)

方法名称: Arrays ▕→ 取结点组的属性与值(查询4)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     取结点组的属性与值(查询4)
 参数: 
     xmlpath : 元素结点对象组或查询串,缺省null为当前元素
 返回: 
     属性(前导符@)与值二维数组
 定义: 
     public Dictionary<string, string>[] Arrays(IEnumerable xmlpath = null)

方法名称: ArrayByName ▕→ 取同名结点组的属性与值(查询5)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     取同名结点组的属性与值(查询5)
 参数: 
     name : 结点名称
     xmlpath : 元素结点对象或查询串,缺省为根元素
 返回: 
     属性(前导符@)与值二维数组
 定义: 
     public Dictionary<string, string>[] ArrayByName(string name, IEnumerable xmlpath = null)

方法名称: ArrayChildren ▕→ 取本结点的孩子结点的属性与值(查询6)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     取本结点的孩子结点的属性与值(查询6)
 参数: 
     xmlpath : 元素结点对象组或查询串,缺省null为当前元素
 返回: 
     属性(前导符@)与值二维数组
 定义: 
     public Dictionary<string, string>[] ArrayChildren(IEnumerable xmlpath = null)

方法名称: GetChildrenKvs ▕→ 取指定结点的孩子结点的属性与值(查询7)

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     取指定结点的孩子结点的属性与值(查询7)
 参数: 
     xmlpath : 元素结点对象组或查询串,缺省null为当前元素
 返回: 
     WjwKvs
 定义: 
     public WjwKvs GetChildrenKvs(IEnumerable xmlpath = null)

方法名称: ToJson ▕→ 转为json字串

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     转为json字串
 参数: 
     node : 结点句柄
     addAt : 叶子结点无文本值时(纯属性结点),属性名称前是否加@前缀
     isComp : 是否压缩
 返回: 
     json串(属性键值以@开头的属性名为键名,字串值为父结点名为键名,子结点的同名结点为数组)
 定义: 
     public string ToJson(XmlElement node = null, bool addAt = false, bool isComp = true)

方法名称: ToObj ▕→ 转为对象

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     转为对象
 参数: 
     node : 结点句柄
     addAt : 叶子结点无文本值时(纯属性结点),属性名称前是否加@前缀
 返回: 
     object
 定义: 
     public object ToObj(XmlElement node, bool addAt = false)

方法名称: GetTextNodeValue ▕→ 得到Text结点的值

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     得到Text结点的值
 参数: 
     node : 结点
 返回: 
 定义: 
     public string GetTextNodeValue(XmlNode node)

方法名称: EachCB ▕→ xml树遍历

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     xml树遍历
 参数: 
     node : 起始结点
     cb : 回调函数:(定义如下)
         bool cb(node,level){}
         node:  当前的元素结点
         level: 当前结点的层深度(从1计)
         返回: false时结束循环
     level : 层深度初值
 返回: 
     完成true/中断退出fale
 定义: 
     public static bool EachCB(XmlElement node, Func<XmlElement, int, bool> cb, int level = 0)

方法名称: EachCB<T> ▕→ xml树遍历的泛形版本

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     xml树遍历的泛形版本
 参数: 
     node : 起始结点
     cb : 回调函数:(定义如下)
         T newT = cb(node,oldT,level){}
         node:  当前的元素结点
         oldT:  用户泛形对象的输入值
         level: 当前结点的层深度(从1计)
         返回: newT用户泛形对象的输出值(用于下个回合的迭代), null时结束循环
     Tobj : 用户用于回调迭代时的泛形对象
     level : 层深度初值
 定义: 
     public static void EachCB<T>(XmlElement node, Func<XmlElement, T, int, T> cb, T Tobj, int level = 0)

方法名称: ToXmlValue ▕→ Xml特殊字符的转换

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     Xml特殊字符的转换
 参数: 
     chrs : 字串
     isRecv : 是否逆转
 返回: 
     适合于xml的值串
 定义: 
     public static string ToXmlValue(string chrs, bool isRecv = false)

方法名称: GetWjwE4x ▕→ 获得WjwE4x实例

 命名空间: WjwLibs
 所属类: WjwLibs.WjwE4x : XmlDocument, IDisposable
 说明: 
     获得WjwE4x实例
     2023-02
 参数: 
     xobj : XmlNode实例对象或以此为基类的实例对象
 返回: 
 定义: 
     public static WjwE4x GetWjwE4x(XmlNode xobj)