public Line NewLine(Line line, bool after) { if (_lstLineText != null && _lstLineText.Contains(line)) { int iIndex = _lstLineText.FindIndex(delegate(Line ln) { if (ln == line) { return(true); } else { return(false); } }); if (iIndex > -1) { Line newLine = new Line(this); newLine.AddSegment(new LineSegment(SegType.Text, "")); if (after) { _lstLineText.Insert(iIndex + 1, newLine); } else { _lstLineText.Insert(iIndex, newLine); } return(newLine); } } else if ((line == _lineFirst && _lineLast == null) || (line != _lineFirst && _lineLast != null && line == _lineLast)) { //Line newLine = new Line(this); if (this.Parent != null) { VXmlNode node = this.Parent.AddChildNode(); if (node != null) { return(node.FirstLine); } } else { VXmlNode nodeRoot = new VXmlNode("", Document); nodeRoot.Layer = 0; nodeRoot.CreateTextLine(); Document.NodeRoot = nodeRoot; return(nodeRoot.FirstLine); } } return(null); }
public virtual void Init(System.Xml.XmlNode node) { try { Name = node.Name; foreach (System.Xml.XmlAttribute xmlattr in node.Attributes) { VXmlAttribute attr = new VXmlAttribute(this); attr.Name = xmlattr.Name; attr.Value = xmlattr.Value; } foreach (System.Xml.XmlNode xmlNode in node.ChildNodes) { if (xmlNode.NodeType == System.Xml.XmlNodeType.Text) { this.Value = (xmlNode as System.Xml.XmlText).Value; } else { VXmlNode nodeChild = null; switch (xmlNode.NodeType) { case System.Xml.XmlNodeType.Comment: nodeChild = new VXmlComment(Document); nodeChild.Layer = Layer + 1; nodeChild.Init(xmlNode); break; case System.Xml.XmlNodeType.CDATA: nodeChild = new VXmlCDataSection(Document); nodeChild.Layer = Layer + 1; nodeChild.Init(xmlNode); break; default: nodeChild = new VXmlNode(Document); nodeChild.Layer = Layer + 1; nodeChild.Init(xmlNode); break; } //nodeChild.Layer = Layer + 1; nodeChild.Parent = this; _lstChildNode.Add(nodeChild); } } } catch (System.Exception ex) { MessageBox.Show(ex.Message + "\n" + node.OuterXml); } CreateTextLine(); }
/// <summary> /// 添加子节点 /// </summary> public VXmlNode InsertChildNode(int index) { VXmlNode nodeChild = null; nodeChild = new VXmlNode(Document); nodeChild.Layer = Layer + 1; nodeChild.Parent = this; _lstChildNode.Insert(index, nodeChild); return(nodeChild); }
public VXmlNode AddChildNode(string name = "") { VXmlNode nodeChild = null; nodeChild = new VXmlNode(name, Document); nodeChild.Layer = Layer + 1; nodeChild.Parent = this; nodeChild.CreateTextLine(); _lstChildNode.Add(nodeChild); return(nodeChild); }
public virtual void AddChildNode(System.Xml.XmlNode node) { try { VXmlNode childNode = new VXmlNode(Document); childNode.Init(node); this._lstChildNode.Add(childNode); } catch (System.Exception ex) { MessageBox.Show(ex.Message + "\n" + node.OuterXml); } }
public void LoadXml(string xml) { System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); try { doc.LoadXml(xml); XmlHeader = new VXmlHeader(this, doc.FirstChild); NodeRoot = new VXmlNode(this); NodeRoot.Init(doc.DocumentElement); m_sFile = ""; NCalc = true; } catch (System.Exception ex) { MessageBox.Show("读取XML字符串失败,请确认xml字符串是否正确。\n" + ex.Message); } }
public void InsertXml(string xml) { System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); try { doc.LoadXml(xml); if (NodeRoot == null) { NodeRoot = new VXmlNode(this); NodeRoot.Init(doc.DocumentElement); } else if (_editor.Caret.Line > 1) { Line line = this.GetLineByLineCount(_editor.Caret.Line); if (line.Node != null) { if (line == line.Node.FirstLine) { line.Node.Init(doc.DocumentElement); } else { VXmlNode node = line.Node; node.AddChildNode(doc.DocumentElement); } } } NCalc = true; } catch (System.Exception ex) { MessageBox.Show("读取XML字符串失败,请确认xml字符串是否正确。\n" + ex.Message); } }
public void Load(string file) { System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); try { _bookmarkManager.Clear(); doc.Load(file); XmlHeader = new VXmlHeader(this, doc.FirstChild); NodeRoot = new VXmlNode(this); NodeRoot.Init(doc.DocumentElement); m_sFile = file; NCalc = true; } catch (System.Exception ex) { MessageBox.Show("打开XML文件失败,请确认文件是否正确。\n" + ex.Message); } }
public VXmlAttribute(VXmlNode node) { Node = node; node.Attributes.Add(this); }
/// <summary> /// 在当前行下插入新行 /// </summary> public Line InsertLine(Line line, ref int caretCol) { Line newLine = null; if (_lstLineText != null && _lstLineText.Contains(line)) { newLine = new Line(this); int index = _lstLineText.IndexOf(line); _lstLineText.Insert(index + 1, newLine); } else if (this is VXmlHeader) { if (Document.NodeRoot == null) { VXmlNode nodeRoot = new VXmlNode("", Document); nodeRoot.Layer = 0; nodeRoot.CreateTextLine(); Document.NodeRoot = nodeRoot; return(nodeRoot.FirstLine); } return(Document.NodeRoot.FirstLine); } else if (FirstLine == line) { if (_lstLineText == null) { newLine = new Line(this); _lstLineText = new List <Line>(); _lstLineText.Add(newLine); } else { newLine = new Line(this); _lstLineText.Insert(0, newLine); } } if (newLine == null) { return(newLine); } List <LineSegment> segmentList = new List <LineSegment>(); foreach (LineSegment seg in line.Segments) { if (seg.SegType == SegType.Space) { segmentList.Add(seg); caretCol += 1; } else if (seg.SegType == SegType.Tab) { segmentList.Add(seg); caretCol += 4; } else { newLine.AddSegment(segmentList); return(newLine); } } return(newLine); }