06-17-2009 09:22 AM
Bonjour,
Je souhaite générer un fichier xml en utilisant l'API CVIXML de Labwindows/CVI 7.0 malheureusement le fichier de sortie contient une balise correspondant au nom du fichier xml.
Par exemple, lorsque je génére le fichier test.xml, une balise <test.xml> encapsule l'ensemble de mon document xml.
D'autre part, les valeurs possibles du paramètre formatDoc de la fonction CVIXMLSaveDocument.
La valeur par défaut est 0.
La valeur "1" permet de mettre des retours à la ligne entre chaque contenu.
Merci d'avance.
06-18-2009 04:45 AM
Bonjour,
L'option formatDoc permet de préciser qui doit s'occuper du formatage du fichier: Microsoft XML DOM lorsqu'il est à 0 ou Labwindows lorsqu'il est à 1.
Comment utiliser vous l'api CVIXML? Cette API permet de générer un fichier XML en fonction des arguments que vous lui passer. Vous devez avoir quelque part dans votre codela fonction CVIXMLSetElementValue avec le nom de votre fichier.
Cordialement,
Aurélien J.
National Instruments France
06-18-2009 05:42 AM
Merci pour votre réponse.
Mais je n'ajoute en aucun cas la balise avec le nom du fichier.
Il semble que cela soit ajouter par MSXML_IXMLDOMDocumentSave.
Si tu fais un programme simple avec les deux fonctions à la suite:
MSXML_IXMLDocumentLoad(filePath1, &document);
MSXML_IXMLDocumentSave(document, NULL, filePath2);
Tu remarqueras que le fichier généré est différent et contient le nom du fichier comme balise.
Connaissez-vous une méthode pour générer un fichier xml sans la balise contenant le nom du fichier xml?
06-18-2009 06:58 AM
Effectivement cette fonction rajoute cette balise.
Vous pouvez utiliser la fonction "CVIXMLSaveDocument" qui permet d'enregistrer un format XML.
Vous avez egalement un exemple dans CVI dans sample/toolbox/XMLSamples.cws de l'utilisation de toutes les fonctions associées à cette API.
Cordialement,
Aurélien J.
National Instruments France
06-18-2009 07:05 AM
Bonjour,
Je parlais de cette fonction CVIXMLDocumentSave qui ajoute cette balise.
Je trouve cela dommage que cette fonction ajoute le nom du fichier comme balise principale.
Faites le test de ce code suivant:
CVIXMLLoadDocument(filePath, &Document);
CVIXMLDocumentSave(document,1,filePath);
Vous verrez par vous même.
Cordialement,
06-18-2009 10:54 AM
Bonjour,
J'ai testé le code suivant:
#include "cvixml.h"
#include <userint.h>
#include <cvirte.h>
static CVIXMLDocument xmlDoc;
static CVIXMLElement newElement;
static CVIXMLElement rootElement;
int main (int argc, char *argv[])
{
char File_path[MAX_PATHNAME_LEN];
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
CVIXMLLoadDocument ("ni.xml", &xmlDoc);
//CVIXMLGetRootElement (xmlDoc, &rootElement);
//CVIXMLNewElement (rootElement, -1, "newTag", &newElement);
//CVIXMLSetElementValue (newElement, "3.141592");
//CVIXMLDiscardElement (newElement);
//CVIXMLDiscardElement (rootElement);
CVIXMLSaveDocument (xmlDoc, 0, "ni.xml");
CVIXMLDiscardDocument (xmlDoc);
return 0;
}
Je lis bien le document XML et je ne vois pas le tag dont vous parlez.
Cordialement,
Aurélien J.
National Instruments France