1- use quick_xml:: events:: * ;
2- use quick_xml:: { NsReader , Writer } ;
3- use rio_api:: model:: * ;
4- use rio_api:: parser:: TriplesParser ;
5- use std:: convert:: TryInto ;
6- use std:: io:: BufRead ;
7- use std:: str;
8-
91use crate :: error:: { RdfXmlError , RdfXmlErrorKind } ;
102use crate :: model:: * ;
113use crate :: utils:: * ;
124use oxilangtag:: LanguageTag ;
135use oxiri:: Iri ;
6+ use quick_xml:: escape:: resolve_xml_entity;
147use quick_xml:: escape:: unescape_with;
158use quick_xml:: events:: attributes:: Attribute ;
9+ use quick_xml:: events:: * ;
1610use quick_xml:: name:: { LocalName , QName , ResolveResult } ;
11+ use quick_xml:: { NsReader , Writer } ;
12+ use rio_api:: model:: * ;
13+ use rio_api:: parser:: TriplesParser ;
1714use std:: collections:: { HashMap , HashSet } ;
15+ use std:: convert:: TryInto ;
16+ use std:: io:: BufRead ;
17+ use std:: str;
1818
1919/// A [RDF/XML](https://www.w3.org/TR/rdf-syntax-grammar/) streaming parser.
2020///
@@ -63,7 +63,7 @@ impl<R: BufRead> RdfXmlParser<R> {
6363 /// Builds the parser from a `BufRead` implementation, and a base IRI for relative IRI resolution.
6464 pub fn new ( reader : R , base_iri : Option < Iri < String > > ) -> Self {
6565 let mut reader = NsReader :: from_reader ( reader) ;
66- reader. expand_empty_elements ( true ) ;
66+ reader. config_mut ( ) . expand_empty_elements = true ;
6767 Self {
6868 reader : RdfXmlReader {
6969 reader,
@@ -80,7 +80,7 @@ impl<R: BufRead> RdfXmlParser<R> {
8080
8181 /// The current byte position in the input data.
8282 pub fn buffer_position ( & self ) -> usize {
83- self . reader . reader . buffer_position ( )
83+ self . reader . reader . buffer_position ( ) . try_into ( ) . unwrap ( )
8484 }
8585}
8686
@@ -1021,7 +1021,7 @@ impl<R: BufRead> RdfXmlReader<R> {
10211021
10221022 fn convert_attribute ( & self , attribute : Attribute ) -> Result < String , RdfXmlError > {
10231023 Ok ( attribute
1024- . decode_and_unescape_value_with ( & self . reader , |e| self . resolve_entity ( e) ) ?
1024+ . decode_and_unescape_value_with ( self . reader . decoder ( ) , |e| self . resolve_entity ( e) ) ?
10251025 . to_string ( ) )
10261026 }
10271027
@@ -1036,7 +1036,7 @@ impl<R: BufRead> RdfXmlReader<R> {
10361036 }
10371037
10381038 fn resolve_entity ( & self , e : & str ) -> Option < & str > {
1039- self . custom_entities . get ( e) . map ( |e| e . as_str ( ) )
1039+ resolve_xml_entity ( e ) . or_else ( || self . custom_entities . get ( e) . map ( String :: as_str) )
10401040 }
10411041}
10421042
0 commit comments