Re: [xml] [Bug 143739] - incorrect line numbers in well-formedness error message



On Fri, 2004-07-02 at 04:01, Daniel Veillard wrote:
Now all error messages display the same, incorrect line number:

Well-formedness Error [line 65535]: Char 0xD96B out of allowed range

 Do you use specific error reporting mechanism ?

I'm using a function called xmlTextReaderLocatorLineNumber(locator) to
determine the line number.

Here's the entire libxml2-related code - just two small functions. It's
pretty minimal:

/*
 * wfErrorFunc - used by isWellFormedXML to handle errors
 */
void wfErrorFunc(void *arg, const char *msg, xmlParserSeverities
severity, xmlTextReaderLocatorPtr locator) {
  const char *err[5] = {
    "",
    "Validity Warning",
    "Validity Error",
    "Warning",
    "Error"
  };
 
  printf("Well-formedness %s [line %i]:
%s",err[severity],xmlTextReaderLocatorLineNumber(locator),msg);
}


/*
 * isWellFormedXML: Checks XML well-formedness acccording to the W3C
 * XML 1.0 definition. http://www.w3.org/TR/REC-xml
 * Based on the streamFile function from xmllint.c, part of the libxml
 * library by Daniel Veillard.
 * http://xmlsoft.org/
 *
 */
static int isWellFormedXML(char *filename) {
    xmlTextReaderPtr reader;
    int ret = 1;
 
    reader = xmlNewTextReaderFilename(filename);
    if (reader != NULL) {
        xmlTextReaderSetErrorHandler(reader,wfErrorFunc,NULL);
        while (ret == 1) {
            ret = xmlTextReaderRead(reader);
        }
        xmlFreeTextReader(reader);
    }
    else {
        fprintf(stderr,"Error: unable to open [%s]\n",filename);
        exit(1);
    }
    if(ret != 0) return 0;
    return 1;
}

The entire source for the dumpcheck program is available here:

 http://rainwaterreptileranch.org/steve/sw/odp/

-Steve





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]