Re: xmlfile load failed
On 10 Dez., 06:31, Joseph M. Newcomer <newco...@flounder.com> wrote:
See below...
On Thu, 9 Dec 2010 13:19:26 -0800 (PST), mfc <mfcp...@googlemail.com> wro=
te:
Hi,
I`ve a strange problem, according to my xmlfile load function (it
always works; but today it always fails: I didn`t change anything on
the xmfile load code.
If I try to debug the load method always fails on my computer (but
that`s the only computer where it failed); if I start the exe without
the use of visual studio everything works as expected (the xmfile will
be loaded - no problems). I`ve tried to debug this project on another
computer and it works (without failing to load the file).
In the debug window I get some first-chance exceptions by calling this
line:
vResult = m_pXMLDoc->load(bstrFileName);
1. First chance exception: NT_close was called
2. wininet.dll and normaliz.dll will be unloaded again
The xmlfile is definitely available.
****
You are basing this assertion on what evidence? Note: if you say "I ca=
n see it in Windows
Explorer" I could care less. You are not using Windows Explorer to loa=
d it. You are
specifying a filename. We need to see that precise filename. If you=
know the XML file
exists, you must tell us WHERE it exists.
The xmlfile exists in the current working directory of the visual
studio project. I`ve also tried to load a nearly empty xmlfile which
must be valid (but it failed)...
<?xml version="1.0" encoding="UTF-8"?>
<Usercfg>
</Usercfg>
****
Since at no point did you show what was in the bstrFileName (I wonder why=
the silly 'bstr'
prefix is used, because either it is a BSTR or it isn't, and if it isn't =
it won't compile,
CString strFileName (_T("userdata.xml"));
if(!(XmlFile.LoadUserXml(strFileName)))
return FALSE;
BOOL CXmlFile::LoadUserXml(CString strFileName)
{
MSXML2::IXMLDOMDocument2Ptr m_pXMLDoc;
MSXML2::IXMLDOMElementPtr m_pDocRoot;
// Create the XML Document
HRESULT hr = m_pXMLDoc.CreateInstance(CLSID_DOMDocument);
if (FAILED(hr))
{
_com_error er(hr);
AfxMessageBox(er.ErrorMessage());
return FALSE;
}
_bstr_t bstrFileName;
bstrFileName = strFileName.AllocSysString();
XmlFileName = strFileName;
VARIANT_BOOL bLoaded = m_pXMLDoc->load(bstrFileName);
if (bLoaded == VARIANT_TRUE)
{// now that the document is loaded, we need to initialize the root
pointer
m_pDocRoot = m_pXMLDoc->documentElement;
}
else
{
AfxMessageBox(_T("XML File FAILED to load!"));
return FALSE;
}
//and so on
}
So if you want help in analyzing the problem, you have to state the whole=
problem and all
the conditions, which you did not.
Now, a first-chance exception suggests that the XML component failed inte=
rnally, and that
leads to ideas that either the XML is ill-formed, and caused a problem, o=
r there really is
a bug in the XML reader. But since you don't know what the exception i=
s (e.g., XML syntax
exception), and you did not tell us what Result was, so it is going to be=
very difficult
to guess.
The whole thing works until yesterday... and yesterday, I didn`t
change anything in the xml part. I have no clue why the xml reader
MSXML won`t work.... It seems that there is /was no wrong setting in
the visual studio, because I reset all my settings to the default
ones, and the problem occured, too.
****
If it failed to load, there should be a way to find out why. Alas, it =
appears the XML
interface was designed by children and there is no equivalent of GetLastE=
rror to find out,
in the case of failure, where it failed, why it failed, or anything usefu=
l. But this is
not surprising, given the fact that within Microsoft, design has apparent=
ly been turned
over to 12-year-olds. Mature programmers would insist that if there wa=
s an error, the
nature of the error, the filename, and the line (and even the character p=
osition within
the line) on which the error occurred should all be made available. Be=
havior like this is
why most of us who use XML try mightily to avoid ever touching the Micros=
oft XML
components!
Yes I also tried to find the problem using GetLastError() or a method
from the MSXML but as you pointed out, there`s no such method...
Which xml reader would you suggest me to use? If I`m right you wrote
your own xml reader, but is there also a good one available?
TinyXML???
best regards
Hans