/// Handles opening tags. protected virtual void Callback_StartElementHandler(string tagName, ref jxAttributeList attrList) { // placeholder for new element. jxElement newElement; // no assignment is bad form but necessary if (!m_isRootFlag) { // need to setup root element... newElement = new jxElement(tagName.Trim(), null); m_Root = newElement; m_isRootFlag = true; } else { // standard new element creations... newElement = new jxElement(tagName.Trim(), m_currentElement); } //newElement.DebugPrint(); // Add attributes we've encounted thus far if (attrList.Count != 0) { newElement.m_AttrList = attrList; } // clear saved attribute list attrList = new jxAttributeList(); // advance current element m_currentElement = newElement; }
public void InsertChild(jxE eInsert, int iOrder = -1) // -1이면 맨마지막에 추가, 0이면 첫번째노드 다음에 추가. { eInsert.m_Parent = this; jxE eInsertNextPos = GetChild(iOrder); if (eInsertNextPos == null) { m_Child = eInsert; eInsert.m_Prev = eInsert.m_Next = null; eInsert.m_iOrder = 0; m_iChildCount = 1; } else { ++m_iChildCount; eInsert.m_Prev = eInsertNextPos; eInsert.m_Next = eInsertNextPos.m_Next; if (eInsertNextPos.m_Next != null) { eInsertNextPos.m_Next.m_Prev = eInsert; } eInsertNextPos.m_Next = eInsert; } reorderChild(); }
//~jxElement() { clear(); } private void clear() { if (IsEType(EDataType.e_null)) { bool isOk = m_Parent == null && m_Prev == null && m_Next == null && m_Child == null && m_iChildCount == 0 && m_AttrList == null; if (!isOk) { throw new System.Exception("ERROR : m_Parent==null && m_Prev==null && m_Next==null && m_Child==null && m_iChildCount==0 && m_AttrList==null"); } return; } m_iOrder = -1; m_iChildCount = 0; m_Parent = null; jxE ePrev = m_Prev; if (m_Prev != null) { m_Prev.m_Next = m_Next; m_Prev = null; } if (m_Next != null) { m_Next.m_Prev = ePrev; m_Next = null; } for (jxE e = m_Child; e != null; e = m_Child.m_Next) { e = null; } m_AttrList = null; m_NamedUserData = null; m_UserData = null; }
public jxElement(string name, jxElement parent) : base(EDataType.e_unkown) { SetTagName(name); m_iOrder = 0; m_Parent = parent; if (parent != null) { parent.InsertChild(this); } }
/// Handles end tags. protected virtual void Callback_EndElementHandler(string tagName) { if (!m_isRootFlag) { return; } if (m_Root == m_currentElement) { return; } m_currentElement = (jxElement)m_currentElement.GetParent(); }