From 2b68c7dafbb8839f04be014b7a0d95a8c0b7b9e3 Mon Sep 17 00:00:00 2001 From: Shautvast Date: Sat, 19 Jul 2025 08:48:44 +0200 Subject: [PATCH] end calls --- src/maven/xml/sax_parser.rs | 17 +++++++++++------ src/maven/xml/sax_parser_test.rs | 2 ++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/maven/xml/sax_parser.rs b/src/maven/xml/sax_parser.rs index e754c8a..bbeb1c0 100644 --- a/src/maven/xml/sax_parser.rs +++ b/src/maven/xml/sax_parser.rs @@ -33,14 +33,17 @@ impl<'a> SAXParser<'a> { } fn parse_elements(&mut self) -> anyhow::Result<()> { - if self.current == '<' { - self.advance()?; - if self.next_char()? != '/' { - self.parse_start_element()?; - } else { - self.parse_end_element()?; + while self.position < self.xml.len() { + if self.current == '<' { + self.advance()?; + if self.current != '/' { + self.parse_start_element()?; + } else { + self.parse_end_element()?; + } } } + self.handler.end_document(); Ok(()) } @@ -55,6 +58,8 @@ impl<'a> SAXParser<'a> { } self.handler.start_element("", name.as_str(), "", atts); + self.skip_whitespace()?; + self.expect_char('>')?; Ok(()) } diff --git a/src/maven/xml/sax_parser_test.rs b/src/maven/xml/sax_parser_test.rs index 38a37fd..af41f19 100644 --- a/src/maven/xml/sax_parser_test.rs +++ b/src/maven/xml/sax_parser_test.rs @@ -58,6 +58,8 @@ mod tests { assert!(testhandler.start_element_called); assert!(!testhandler.elements.is_empty()); assert_eq!(testhandler.elements[0], r#""#); + assert!(testhandler.end_element_called); + assert!(testhandler.end_document_called); } }