From c9709a6d3a586da11e6ac4cdf6629d9e24abf463 Mon Sep 17 00:00:00 2001 From: Jia Chao Date: Thu, 6 Jun 2024 10:19:48 +0800 Subject: [PATCH] =?UTF-8?q?XmlReader:=20=E6=B7=BB=E5=8A=A0=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jia Chao --- src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 038772f..be4cb5b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -46,6 +46,9 @@ impl XmlReader { event } + /// 若下一个字段是 StrartElement,则返回其 name , 若为其它元素,则返回一个空字符串,类型为 + /// Option。当其所在深度小于指定值时,返回 None。 + #[instrument(skip(self, depth))] pub fn next_start_name_under_depth(&mut self, depth: usize) -> Option { match self.next() { Ok(XmlEvent::StartElement { name, .. }) => { @@ -67,6 +70,8 @@ impl XmlReader { } } + /// 向下读取一个 Characters 类型的值,并忽略其它除 EndDocument 和 + /// 错误外的所有结果(此时返回空字符串)。 #[instrument(skip(self))] pub fn next_characters(&mut self) -> String { loop { @@ -75,7 +80,15 @@ impl XmlReader { trace!(characters = ?data); return data.into(); } - _ => {} + Ok(XmlEvent::EndDocument) => { + error!("End of the xml, that shouldn't happen..."); + return "".to_string(); + } + Ok(_) => {} + Err(e) => { + error!("XmlReader error: {e}"); + return "".to_string(); + } } } }