tag online mp3tag mp3meta files and windows visual-c++ com scripting msxml

windows - online - tag files and folders



¿Qué versión de MSXML debo usar? (5)

Parece que MSXML 5 es la única versión capaz de firmar digitalmente un XML. El sitio de MS dice que incluso MSXML 6 no puede hacerlo, por lo que, si necesita esta característica, parece que MSXML 5 es el único camino a seguir.

http://msdn.microsoft.com/en-us/library/ms761363(VS.85).aspx "Este código de ejemplo utiliza características que se implementaron en MSXML 5.0 para aplicaciones de Microsoft Office. Las firmas digitales XML no son compatibles en MXSML 6.0 y más tarde "

Parece que esto sería una pregunta común, aunque no pude encontrarlo en SO.

¿Qué versión de MSXML debo usar en mis aplicaciones, y más importante aún, cómo debo decidir?

Hay MSXML3, 4, 5 y 6.

Recientemente calling-wcf-service-by-vbscript un código en calling-wcf-service-by-vbscript que usaba MSXML v4. AnthonyWJones publicó que no debería usar 4, sino 3 o 6, pero probablemente 3. ¡Ciertamente no v5!

¿Por qué? Me gustaría saber más acerca de los criterios para seleccionar la versión de MSXML para usar en mis aplicaciones.

Pregunta de bonificación : ¿Alguien tiene un resumen de las diferencias entre las distintas versiones de MSXML en el tiempo?

Resumen hasta el momento:

  • MSXML6
    Debería ser la primera opción. fue lanzado en 2006 e incluye arreglos de perf y compliance. Usa esto si puedes. Es bueno. No hay módulos de fusión; para agrupar el tiempo de ejecución MSXML6 con su aplicación, MS sugiere empaquetar el archivo msi MSXML6 . MSXML6 es una actualización de MSXML3 / 4 pero no los reemplaza, porque interrumpe algunas funciones. Puedes obtener el MSI here .
  • MSXML3
    Segunda elección. La versión más ampliamente implementada. Originalmente enviado en marzo de 2000. mantenido activamente, no hay nuevas características. Actualmente compatible, si tiene SP5 (enviado en 2005) o posterior. SP7 es actual (también desde 2005).
  • MSXML5
    fue lanzado solo como parte de MS-Office. Actualmente es compatible con Microsoft, pero solo como parte de Office, no para crear aplicaciones. No cree aplicaciones que dependan de MSXML5: Verboten.
  • MSXML4
    Originalmente enviado? Actualmente en "modo de mantenimiento". Microsoft está alentando a las personas a pasar de MSXML4 a MSXML6. Actualmente compatible si está en MSXML4SP2 o posterior, que se envió en 2003. descargue MSXML4SP2 here . Puede ser redistribuido

Usar la versión correcta de MSXML en Internet Explorer es una buena entrada en el blog de xmlteam de Microsoft .


Recientemente, creé una biblioteca JS que intentó degradar con gracia desde la última versión a la más antigua. Descubrí que MSXML 3.0 está muy bien soportado en la mayoría de los sistemas. Quería usar v. 6.0 cuando estaba disponible, pero se rompió en algunas instalaciones de IE 8. Entonces, tuve que cambiar mi código para probar v 3.0 primero y luego v 6.0 y luego v 2.0.



Tuve que tomar la misma decisión en mi trabajo hace un par de años.

MSDN afirma que la versión 6 es la mejor para usar, sin embargo, no proporcionan módulos de combinación en el SDK y no se le permite distribuirla en su aplicación como lo haría con la versión 4. La versión 4 fue reemplazada por la versión 6 y la versión 5 fue específicamente para MS Office. La versión 3 sigue siendo la versión objetivo en máquinas más antiguas.

Lo que terminé haciendo fue tomar un enfoque de degradación elegante e intentar usar 6 primero, fallando esa versión 4, y luego fallando esa versión de uso 3 (el código es C ++):

inline bool CXMLDocument::CreateXMLDOMFactory(void) { wxMutexLocker lock(sm_mXMLDOMFactory); if(!sm_pXMLDOMFactory) { ::CoGetClassObject(CLSID_DOMDocument60, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory)); if(!sm_pXMLDOMFactory) { ::CoGetClassObject(CLSID_DOMDocument40, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory)); if(!sm_pXMLDOMFactory) ::CoGetClassObject(CLSID_DOMDocument30, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory)); } } return sm_pXMLDOMFactory != 0; }

Notamos mejoras apreciables en el rendimiento después de pasar a la versión 6 desde la versión 4, aunque debe establecer explícitamente la propiedad NewParser en el documento para obtener este beneficio, por ejemplo:

pDocument->setProperty(_bstr_t(L"NewParser"), VARIANT_TRUE);

También hubo un par de pasos adicionales para pasar al cargar documentos debido a consideraciones de seguridad, DTD remotos, etc. De nuevo, esto se realizó mediante propiedades en el documento, por lo que vale la pena buscar las UseInlineSchema ProhibitDTD , UseInlineSchema , AllowXsltScript y ServerHTTPRequest en MSDN para ver si se aplican a su uso.