jojomillenium
Messages postés136Date d'inscriptionsamedi 1 mai 2004StatutMembreDernière intervention26 mai 2007
-
26 mai 2007 à 18:40
jojomillenium
Messages postés136Date d'inscriptionsamedi 1 mai 2004StatutMembreDernière intervention26 mai 2007
-
26 mai 2007 à 18:44
Bonjour,
(C++.NET form application sous VS2003)
J'aimerai pouvoir lire un fichier XML seulment je n y arrive pas, j ai
trouver plusieurs exemple sur le net mais aucun ne fonctionne.
Celui qui me semble le plus simple est le suivant (code ci dessous)
mais lorsqu'il arrive a "while(reader->Read())" il plant et me fait
"An unhandled exception of type 'System.Xml.XmlException' occuredin system.xml.dll
Additional information: Erreur système."
Mais je comprend pas d ou ca peut venir! Lorsque je crée un nouveau
projet console ca fonctionne, mais lorsque je veux l ajouter dans mon
projet la ca plante!
voici le code avec mes headers, biensur je met en commentaire les parties consoles dans mon projet.
Avez vous une idée de ou ca peut venir? Ou connaissez vous une autre facon de faire?
merci beaucoup pour votre aide, ca fait 1 semaines que je plante sur ce point et que j essaie de lire un fichier xml.
#pragma once
#include <CVisionManager_managed.h>
#include <ctime>
#undef MessageBox
#include <windows.h>
#include <msxml.h>
#include <string>
#include "stdafx.h"
#include <tchar.h>
#using <mscorlib.dll>
#using <System.xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
void MyXMLReader(void)
{
XmlTextReader* reader = new XmlTextReader ("config.xml");
while (reader->Read())
{
switch (reader->NodeType)
{
case XmlNodeType::Element: // The node is an element.
Console::Write("<{0}", reader->Name);
while (reader->MoveToNextAttribute()) // Read the attributes.
jojomillenium
Messages postés136Date d'inscriptionsamedi 1 mai 2004StatutMembreDernière intervention26 mai 2007 26 mai 2007 à 18:44
Au fait ma deuxieme alternative que j avais trouvé est la suivante, mais lorsque au lieu de faire
iXMLDoc->loadXML(CComBSTR(src),&bSuccess); je fait le
iXMLDoc->load(CComVariant(url),&bSuccess); avec comme url "config.xml" ca me sort n importe quoi, il ne le lis pas comme il faut apparement!
// Following is a bugfix for PocketPC.
#ifdef _UNDER_CE
gargle bargle
iXMLDoc->put_async(VARIANT_FALSE);
CComQIPtr iSafety(iXMLDoc);
if (iSafety)
{ DWORD dwSupported, dwEnabled;
iSafety->GetInterfaceSafetyOptions(IID_IXMLDOMDocument,&dwSupported,&dwEnabled);
iSafety->SetInterfaceSafetyOptions(IID_IXMLDOMDocument,dwSupported,0);
}
#endif
// Load the file.
VARIANT_BOOL bSuccess=false;
// Can load it from a url/filename...
//iXMLDoc->load(CComVariant(url),&bSuccess);
// or from a BSTR...
iXMLDoc->loadXML(CComBSTR(src),&bSuccess);
// Get a pointer to the root
CComPtr iRootElm;
iXMLDoc->get_documentElement(&iRootElm);
// Thanks to the magic of CComPtr, we never need call
// Release() -- that gets done automatically.
TElem etext = eroot.subnode(L"text");
wstring s = etext.val();
// returns "Hello World"
s = eroot.subval(L"text");
// This is a shorter way to achieve the same thing
TElem elays = eroot.subnode(L"layouts");
for (TElem e=elays.begin(); e!=elays.end(); e++)
{ int pos = e.attrInt(L"pos",-1);
bool bold = e.attrBool(L"bold",false);
// we suggest default values, in case the attribute is missing
wstring id = e.name();
// returns "lay" or "layoff" or "layin"
}
}