aboutsummaryrefslogtreecommitdiff
path: root/src/dav/xml.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/dav/xml.rs')
-rw-r--r--src/dav/xml.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/dav/xml.rs b/src/dav/xml.rs
index 1cce86a..bf02721 100644
--- a/src/dav/xml.rs
+++ b/src/dav/xml.rs
@@ -129,5 +129,23 @@ impl<T: IRead> Reader<T> {
}
self.next().await
}
+
+ pub async fn tag_string(&mut self) -> Result<String, ParsingError> {
+ let mut acc = String::new();
+ loop {
+ match self.peek() {
+ Event::CData(unescaped) => {
+ acc.push_str(std::str::from_utf8(unescaped.as_ref())?);
+ self.next().await?
+ },
+ Event::Text(escaped) => {
+ acc.push_str(escaped.unescape()?.as_ref());
+ self.next().await?
+ }
+ Event::End(_) | Event::Start(_) | Event::Empty(_) => return Ok(acc),
+ _ => self.next().await?,
+ };
+ }
+ }
}