Como se usa el SAX y el DOM en xml Quiero ejemplos por favor
Necesito saber como se utiliza dom y sax con xml; por favor necesitarÃa ejemplos sencillos de ambas cosas. Muchas gracias
Hola,
yo solo se usar DOM.
Para probar, puedes empezar con un pequeño main(), por ejemplo:
int main()
{
IXMLDOMDocument2Ptr pXMLDom;
IXMLDOMElementPtr ElementPtr;
IXMLDOMNodeListPtr pNodeChildren = NULL;
IXMLDOMNodePtr pNode = NULL;
HRESULT hr;
CoInitialize(NULL);
hr = pXMLDom.CreateInstance(__uuidof(DOMDocument40));
if (FAILED(hr))
{
printf("Failed to instantiate DOMDocument40 classn");
return -1;
}
pXMLDom->async = VARIANT_FALSE;
if ( pXMLDom->load("miejemplo.xml") != VARIANT_TRUE)
{
printf("Failed load xml data from file.n%sn", (LPCSTR)pXMLDom->parseError->Getreason());
return -1;
}
ElementPtr = pXMLDom->documentElement;
MessageBox(NULL, (LPCSTR)ElementPtr->xml, "Document from its root", MB_OK); /*para coger comentarios*/
pNodeChildrenSignml = ElementPtr->childNodes;
pXMLDom.Release();
ElementPtr.Release(); /*para coger comentarios*/
pNodeChildrenSignml.Release();
pNodeSign_aux.Release();
CoUninitialize();
return 1;
}
yo solo se usar DOM.
Para probar, puedes empezar con un pequeño main(), por ejemplo:
int main()
{
IXMLDOMDocument2Ptr pXMLDom;
IXMLDOMElementPtr ElementPtr;
IXMLDOMNodeListPtr pNodeChildren = NULL;
IXMLDOMNodePtr pNode = NULL;
HRESULT hr;
CoInitialize(NULL);
hr = pXMLDom.CreateInstance(__uuidof(DOMDocument40));
if (FAILED(hr))
{
printf("Failed to instantiate DOMDocument40 classn");
return -1;
}
pXMLDom->async = VARIANT_FALSE;
if ( pXMLDom->load("miejemplo.xml") != VARIANT_TRUE)
{
printf("Failed load xml data from file.n%sn", (LPCSTR)pXMLDom->parseError->Getreason());
return -1;
}
ElementPtr = pXMLDom->documentElement;
MessageBox(NULL, (LPCSTR)ElementPtr->xml, "Document from its root", MB_OK); /*para coger comentarios*/
pNodeChildrenSignml = ElementPtr->childNodes;
pXMLDom.Release();
ElementPtr.Release(); /*para coger comentarios*/
pNodeChildrenSignml.Release();
pNodeSign_aux.Release();
CoUninitialize();
return 1;
}
Hola,
yo solo se usar DOM.
Para probar, puedes empezar con un pequeño main(). Te pongo este ejemplo, para que (si quieres y puedes) lo pruebes en VC++ con MSXML4.0 y veras lo que devuelve cada cosa en el MessageBox. De todas formas, la ayuda del MSXML explica muy bien SAX y DOM. Este ejemplo es usando Smart Pointers, que es mas intuitivo que sin usarlos.
Espero que te ayude
int main()
{
IXMLDOMDocument2Ptr pXMLDom;
IXMLDOMElementPtr ElementPtr;
IXMLDOMNodeListPtr pNodeChildren = NULL;
IXMLDOMNodePtr pNode = NULL;
HRESULT hr;
CoInitialize(NULL);
hr = pXMLDom.CreateInstance(__uuidof(DOMDocument40));
if (FAILED(hr))
{
printf("Failed to instantiate DOMDocument40 classn");
return -1;
}
pXMLDom->async = VARIANT_FALSE;
if ( pXMLDom->load("miejemplo.xml") != VARIANT_TRUE)
{
printf("Failed load xml data from file.n%sn", (LPCSTR)pXMLDom->parseError->Getreason());
return -1;
}
ElementPtr = pXMLDom->documentElement;
MessageBox(NULL, (LPCSTR)ElementPtr->xml, "Document from its root", MB_OK);
pNodeChildren = ElementPtr->childNodes;
for (int i=0; i < pNodeChildren->length; i++)
{
pNode = pNodeChildren->item[i];
MessageBox(NULL, (LPCSTR)pNode ->xml, "Child of pNode", MB_OK);
}
pXMLDom.Release();
ElementPtr.Release();
pNodeChildren.Release();
pNode.Release();
CoUninitialize();
return 1;
}
yo solo se usar DOM.
Para probar, puedes empezar con un pequeño main(). Te pongo este ejemplo, para que (si quieres y puedes) lo pruebes en VC++ con MSXML4.0 y veras lo que devuelve cada cosa en el MessageBox. De todas formas, la ayuda del MSXML explica muy bien SAX y DOM. Este ejemplo es usando Smart Pointers, que es mas intuitivo que sin usarlos.
Espero que te ayude
int main()
{
IXMLDOMDocument2Ptr pXMLDom;
IXMLDOMElementPtr ElementPtr;
IXMLDOMNodeListPtr pNodeChildren = NULL;
IXMLDOMNodePtr pNode = NULL;
HRESULT hr;
CoInitialize(NULL);
hr = pXMLDom.CreateInstance(__uuidof(DOMDocument40));
if (FAILED(hr))
{
printf("Failed to instantiate DOMDocument40 classn");
return -1;
}
pXMLDom->async = VARIANT_FALSE;
if ( pXMLDom->load("miejemplo.xml") != VARIANT_TRUE)
{
printf("Failed load xml data from file.n%sn", (LPCSTR)pXMLDom->parseError->Getreason());
return -1;
}
ElementPtr = pXMLDom->documentElement;
MessageBox(NULL, (LPCSTR)ElementPtr->xml, "Document from its root", MB_OK);
pNodeChildren = ElementPtr->childNodes;
for (int i=0; i < pNodeChildren->length; i++)
{
pNode = pNodeChildren->item[i];
MessageBox(NULL, (LPCSTR)pNode ->xml, "Child of pNode", MB_OK);
}
pXMLDom.Release();
ElementPtr.Release();
pNodeChildren.Release();
pNode.Release();
CoUninitialize();
return 1;
}
