106 lines
2.1 KiB
C++
106 lines
2.1 KiB
C++
// XMLDOMNodeImpl.cpp: implementation of the CXMLDOMNodeImpl class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#include "XMLDOMNodeImpl.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
CXMLDOMNodeImpl::CXMLDOMNodeImpl(XDOM::_DOMNodeType type)
|
|
{
|
|
m_nRef=0;
|
|
m_ntNodeType=type;
|
|
m_pChildNodes=new CXMLDOMNodeListImpl;
|
|
m_pChildNodes->AddRef();
|
|
}
|
|
|
|
CXMLDOMNodeImpl::~CXMLDOMNodeImpl()
|
|
{
|
|
m_pChildNodes->Release();
|
|
}
|
|
|
|
XDOM::_DOMNodeType CXMLDOMNodeImpl::getNodeType()
|
|
{
|
|
return m_ntNodeType;
|
|
}
|
|
|
|
const char *CXMLDOMNodeImpl::getText()
|
|
{
|
|
return m_sText.c_str();
|
|
}
|
|
|
|
const char *CXMLDOMNodeImpl::getName()
|
|
{
|
|
return m_sName.c_str();
|
|
}
|
|
|
|
XDOM::IXMLDOMNodeList *CXMLDOMNodeImpl::getChildNodes()
|
|
{
|
|
return m_pChildNodes;
|
|
}
|
|
|
|
void CXMLDOMNodeImpl::setText(const char *sText)
|
|
{
|
|
m_sText=sText;
|
|
#if defined(LINUX)
|
|
RemoveCRLF(m_sText);
|
|
#endif
|
|
}
|
|
|
|
void CXMLDOMNodeImpl::setName(const char *sName)
|
|
{
|
|
m_sName=sName;
|
|
}
|
|
|
|
bool CXMLDOMNodeImpl::hasChildNodes()
|
|
{
|
|
return m_pChildNodes->length()?true:false;
|
|
}
|
|
|
|
bool CXMLDOMNodeImpl::appendChild(IXMLDOMNode *pNode)
|
|
{
|
|
m_pChildNodes->AddNode(pNode);
|
|
return true;
|
|
}
|
|
|
|
XDOM::IXMLDOMNode *CXMLDOMNodeImpl::getAttribute(const XMLCHAR *sName)
|
|
{
|
|
XDOM::IXMLDOMNode *pNode;
|
|
if(m_ntNodeType!=XDOM::NODE_ELEMENT)
|
|
return NULL;
|
|
pNode=m_pChildNodes->getNamedItem(sName);
|
|
if(pNode)
|
|
{
|
|
if(pNode->getNodeType()==XDOM::NODE_ATTRIBUTE)
|
|
return pNode;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
XDOM::IXMLDOMNodeList *CXMLDOMNodeImpl::getElementsByTagName(const XMLCHAR *sName)
|
|
{
|
|
XDOM::IXMLDOMNode *pNode;
|
|
CXMLDOMNodeListImpl *pNodeList;
|
|
pNodeList=new CXMLDOMNodeListImpl;
|
|
m_pChildNodes->reset();
|
|
while(pNode=m_pChildNodes->nextNode())
|
|
{
|
|
#if defined(LINUX)
|
|
if((compareTextFileStrings(pNode->getName(),sName)==0) && (pNode->getNodeType()==XDOM::NODE_ELEMENT))
|
|
#else
|
|
if((strcmp(pNode->getName(),sName)==0) && (pNode->getNodeType()==XDOM::NODE_ELEMENT))
|
|
#endif
|
|
pNodeList->AddNode(pNode);
|
|
}
|
|
if(pNodeList->length()==0)
|
|
{
|
|
pNodeList->Release();
|
|
return NULL;
|
|
}
|
|
|
|
return pNodeList;
|
|
}
|