StackElement *FirstSib=new StackElement; sprintf(FirstSib->ElementName,"NULL");
FirstSib->NodeIx=0;
FirstSib->position=0; StackElement *elemTmp=new StackElement;

sprintf(elemTmp->ElementName,XMLString::transcode(localname));
elemTmp->NodeIx=m_nodeIx;
elemTmp->position=SibilingStack.SearchPosition(elemTmp->ElementName);

DP.AppendPosition(elemTmp->position);// Insert a node into DTD and a data path node
if (!MyDTD.SearchName(MyDTD.GetCurrentNode(),elemTmp->ElementName))
{
++m_nodeIx;
m_DTDNode = new STRUCTDTD;
sprintf(m_DTDNode->Name,elemTmp->ElementName);
m_DTDNode->NodeIx=m_nodeIx;
m_DTDNode->Arity=0;
MyDTD.InsertNode(m_DTDNode);
MyDP.InsertNode(m_nodeIx);
char *ssTmp=DP.GetDP();
MyDP.InsertDP(m_nodeIx,ssTmp,m_ValueIx);
}
else   // if there is node named ElementName, itis only to add a new data path
{
if (MyDTD.GetCurrentNode()->Arity<elemTmp->position) 
MyDTD.UpdateArity(NULL,elemTmp->position);
unsigned int NodeIx=MyDTD.GetCurrentNode()->NodeIx;
MyDP.InsertDP(NodeIx,DP.GetDP(),m_ValueIx);
}// int parent=(ElemStack.Peek()).NodeIx;
// int priorSib=(SibilingStack.Peek()).NodeIx; SibilingStack.Push(elemTmp);
SibilingStack.Push(FirstSib); fElementCount++;
ElemStack.Push(elemTmp); if (FirstSib!=NULL)
{
delete FirstSib;
FirstSib=NULL;
} int ipos=elemTmp->position;
if (elemTmp!=NULL)
{
delete elemTmp;
elemTmp=NULL;
}在循环这断代吗3000次之后,
if (elemTmp!=NULL)
{
delete elemTmp;
elemTmp=NULL;
}
出错!
?????