Re: [xml] How to continue reading with a xmlTextReader after warning?
- From: Daniel Franke <franke daniel gmail com>
- To: xml gnome org
- Subject: Re: [xml] How to continue reading with a xmlTextReader after warning?
- Date: Sat, 26 Sep 2009 21:28:12 +0200
On Saturday 26 September 2009 00:49:21 you wrote:
I got stuck reading a file with relative URI as xmlns specification, e.g
xmlns:foo="./bar/[...]".
On xmlTextReaderRead(), a warning is generated (relative URIs are
deprecated) and the return value is '-1'. As I know that the files in
question contain this problem, I'd like to skip this particular error.
Subsequent calls to xmlTextReaderRead() seem not to advance to any of the
later nodes but always return '-1'. Thus I assume that one would somehow
need to reset the internal state of the xmlTextReader after the first
return of '-1' - but there seems to be no (obvious) way to do so?! Using
xmlReadFile(), the same warning is issued, but the tree is available
afterwards.
This seems to be quite similar to a previous problem [1,2], there the URI
was empty, not relative?!
To follow-up on myself, the problem is apparently only related to default
namespaces:
$> gcc -o reader1 `xml2-config --cflags` reader1.c `xml2-config --libs`
$> cat test1.xml && ./reader1 test1.xml
<?xml version="1.0"?>
<myroot xmlns:myns="http://absolute"/>
0 1 myroot 1 0
$> cat test2.xml && ./reader1 test2.xml
<?xml version="1.0"?>
<myroot xmlns:myns="relative"/>
0 1 myroot 1 0
$> cat test3.xml && ./reader1 test3.xml
<?xml version="1.0"?>
<myroot xmlns="http://absolute"/>
0 1 myroot 1 0
$> cat test4.xml && ./reader1 test4.xml
<?xml version="1.0"?>
<myroot xmlns="relative"/>
test3.xml:2: namespace warning : xmlns: URI relative is not absolute
<myroot xmlns="relative"/>
^
test3.xml : failed to parse
Further:
$> xmllint test4.xml
test4.xml:2: namespace warning : xmlns: URI relative is not absolute
<myroot xmlns="relative"/>
^
<?xml version="1.0"?>
<myroot xmlns="relative"/>
$> xmllint --stream test4.xml
test4.xml:2: namespace warning : xmlns: URI relative is not absolute
<myroot xmlns="relative"/>
^
test4.xml : failed to parse
Any feasible way to work around the problem (besides rewriting everything to
use the DOM interface)?
Thanks
Daniel
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]