I saw this code in xmllint.c (removed conditionals that do not apply):
static void streamFile(char *filename) {
xmlTextReaderPtr reader;
int ret;
reader = xmlReaderForFile(filename, NULL, options);
if (reader != NULL) {
if (valid)
xmlTextReaderSetParserProp(reader, XML_PARSER_VALIDATE, 1);
else
xmlTextReaderSetParserProp(reader, XML_PARSER_LOADDTD, 1);
/*
* Process all nodes in sequence
*/
if ((timing) && (!repeat)) {
startTimer();
}
ret = xmlTextReaderRead(reader);
while (ret == 1) {
if ((debug)
)
processNode(reader);
ret = xmlTextReaderRead(reader);
}
if ((timing) && (!repeat)) {
if (valid)
endTimer("Parsing and validating");
else
endTimer("Parsing");
}
if (valid) {
if (xmlTextReaderIsValid(reader) != 1) {
xmlGenericError(xmlGenericErrorContext,
"Document %s does not validate\n", filename);
progresult = XMLLINT_ERR_VALID;
}
}
/*
* Done, cleanup and status
*/
xmlFreeTextReader(reader);
if (ret != 0) {
fprintf(stderr, "%s : failed to parse\n", filename);
progresult = XMLLINT_ERR_UNCLASS;
}
} else {
fprintf(stderr, "Unable to open %s\n", filename);
progresult = XMLLINT_ERR_UNCLASS;
}
}
I tried using the exact same code but I still get the same validation
errors on the first call to xmlTextReaderRead...
It is vexing me...
Any thoughts?
Thank you!
Best regards: Zoltán Ördögh
On Sat, Apr 6, 2013 at 2:00 AM, Zoltán Ördögh (GMail) <[email protected]>wrote:
> Hi all,
> I've been using libxml 2.7.7 in the past with BCB6 and it was working fine.
> Now I use libxml 2.9.0 with MSVC 2010 (_MSC_VER = 1600) and I get strange
> validation errors when I try to read the file back that I wrote out before.
>
> I am getting a bit frustrated because I am using the exact same code as I
> did in BCB6 and despite all my efforts, it always fails.
> When I validate the XML with a third-party tool, it all checks out just
> fine.
> When I run: "xmllint.exe --valid testme.xml", it simply dumps the XML
> back without any validation errors.
> For some reason, libxml 2.9.0 on MSVC 2010 won't validate it (even though
> it's from the same build as xmllint.exe itself).
>
> This is the code that opens the file:
>
> #include "libxml/xmlreader.h"
> .
> .
> .
> m_pxmlTextReader=xmlReaderForFile(sXML.c_str(), NULL, XML_PARSE_COMPACT |
> XML_PARSE_BIG_LINES | XML_PARSE_DTDVALID);
>
> if(m_pxmlTextReader)
> {
> if(xmlTextReaderRead(m_pxmlTextReader)==1 &&
> xmlTextReaderIsValid(m_pxmlTextReader)==1)
> {
> // processing
> }
> ...
>
>
> "// processing" is never reached due to the validation errors.
> I attached a simple XML with the DTD that can be used to test it in case
> you're willing to give it a go.
> I captured the errors I see in output.txt, please find it attached.
> As you can see from the output, the DTD is found but for some reason,
> libxml can't match it vs. the XML file.
>
> I don't think it's relevant but this is the libxml config that I use at
> the moment:
>
> Config command:
> cscript configure.js iconv=no static=yes debug=yes compiler=msvc
> prefix=..\..\..\libxml2
>
> Build commands:
> call "C:\Program Files (x86)\MSVS10\VC\vcvarsall.bat"
> nmake /f Makefile.msvc
> nmake /f Makefile.msvc install
>
> Config output:
> Microsoft (R) Windows Script Host Version 5.8
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> libxml2 version: 2.9.0
> Created Makefile.
> Created config.h.
>
> XML processor configuration
> ---------------------------
> Trio: no
> Thread safety: native
> FTP client: yes
> HTTP client: yes
> HTML processor: yes
> C14N support: yes
> Catalog support: yes
> DocBook support: yes
> XPath support: yes
> XPointer support: yes
> XInclude support: yes
> iconv support: no
> icu support: no
> iso8859x support: no
> zlib support: no
> lzma support: no
> Debugging module: yes
> Memory debugging: no
> Runtime debugging: no
> Regexp support: yes
> Module support: yes
> Tree support: yes
> Reader support: yes
> Writer support: yes
> Walker support: yes
> Pattern support: yes
> Push support: yes
> Validation support: yes
> SAX1 support: yes
> Legacy support: yes
> Output support: yes
> XML Schema support: yes
> Schematron support: yes
> Python bindings: no
>
> Win32 build configuration
> -------------------------
> Compiler: msvc
> C-Runtime option: /MD
> Embed Manifest: no
> Debug symbols: yes
> Static xmllint: yes
> Install prefix: ..\..\..\libxml2
> Put tools in: $(PREFIX)\bin
> Put headers in: $(PREFIX)\include
> Put static libs in: $(PREFIX)\lib
> Put shared libs in: $(PREFIX)\bin
> Include path: .
> Lib path: .
>
> I guess it must be something I have overlooked.
> Thank you!
>
> Best regards: Zoltán Ördögh
>
>
_______________________________________________
xml mailing list, project page http://xmlsoft.org/
[email protected]
https://mail.gnome.org/mailman/listinfo/xml