/// <summary> /// 添加新节点 /// </summary> /// <param name="key">节点名称</param> /// <returns></returns> public PDFPramas AddNode(string key) { var pm = new PDFPramas(); pm.Key = key.Trim(); if ("/type" == pm.Key.ToLower()) { _type = pm; } _Nodes.Add(pm); return(pm); }
/// <summary> /// 移除节点 /// </summary> /// <param name="key">节点名称</param> public void Remove(string key) { for (int i = 0; i < Nodes.Count; i++) { if (key == Nodes[i].Key) { if (_type == Nodes[i]) { _type = null; } Nodes.RemoveAt(i); } } }
/// <summary> /// 设置值 /// </summary> /// <param name="_v">值</param> public void SetValue(string _v) { _Value = null; //初始化值 _Nodes = null; //初始化子节点 int falg = 0; int start = -1; PDFPramas pm = null; bool key = false; _v = _v.Trim(); if (_v.IndexOf("<<") == 0) { _v = _v.Substring(2); _Nodes = new List <PDFPramas>(); int p = _v.LastIndexOf(">>"); if (p >= 0) { _end = _v.Substring(p); _end = _end.Length > 2 ? _end.Substring(2) : ""; _v = _v.Substring(0, p); } for (int i = 0; i < _v.Length; i++) { switch (_v[i]) { case '/': //名称 if (0 == falg) { if (key) { pm = AddNode(_v.Substring(start, i - start)); } else { if (null != pm) { pm.SetValue(_v.Substring(start, i - start)); } } start = i; //标记起点 key = !key; } break; case ' ': if (0 == falg && key) { pm = AddNode(_v.Substring(start, i - start)); key = false; start = i; //标记起点 } break; case '<': case '[': if (0 == falg && key) { pm = AddNode(_v.Substring(start, i - start)); key = false; start = i; //标记起点 } falg++; if (_v[1] == '<') { i++; } break; case '>': case ']': falg--; if (_v[1] == '>') { i++; } break; default: break; } } if (start > 0) { pm.SetValue(_v.Substring(start)); } } else { _Value = _v; } }