Finding an XML element value using Rust

 Clash Royale CLAN TAG#URR8PPP
Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;
up vote
1
down vote
favorite
The following is a struct to extract a value between named XML element tags. Though it works, I feel there is functional approach in Rust that I am missing. Any other tips on Rust preferred styling are also appreciated.
pub struct XmlDoc 
 doc: String,
impl XmlDoc 
 pub fn new(doc: String) -> XmlDoc 
 XmlDoc doc 
 
 pub fn get_value(&self, element: &str) -> String 
 let begin_tag = format!("<>", element);
 let end_tag = format!("</>", element);
 let value_begin = self.doc.find::<&str>(begin_tag.as_str()).unwrap();
 let value_end = self.doc.find::<&str>(end_tag.as_str()).unwrap();
 self.doc[value_begin + begin_tag.len()..value_end].to_string()
 
mod tests 
 use super::*;
 #[test]
 fn get_value() 
 let xml = XmlDoc::new("<element>value</element>".to_string());
 let value = xml.get_value("element");
 assert_eq!(value, "value".to_string(), "", value);
 
Note, I understand that XML libraries for Rust already exist. This is intended as a learning tool for working with string manipulations inside vanilla Rust.
Edit:
I thought using regex to parse XML may be a good idea. I was wrong.
xml rust
add a comment |Â
up vote
1
down vote
favorite
The following is a struct to extract a value between named XML element tags. Though it works, I feel there is functional approach in Rust that I am missing. Any other tips on Rust preferred styling are also appreciated.
pub struct XmlDoc 
 doc: String,
impl XmlDoc 
 pub fn new(doc: String) -> XmlDoc 
 XmlDoc doc 
 
 pub fn get_value(&self, element: &str) -> String 
 let begin_tag = format!("<>", element);
 let end_tag = format!("</>", element);
 let value_begin = self.doc.find::<&str>(begin_tag.as_str()).unwrap();
 let value_end = self.doc.find::<&str>(end_tag.as_str()).unwrap();
 self.doc[value_begin + begin_tag.len()..value_end].to_string()
 
mod tests 
 use super::*;
 #[test]
 fn get_value() 
 let xml = XmlDoc::new("<element>value</element>".to_string());
 let value = xml.get_value("element");
 assert_eq!(value, "value".to_string(), "", value);
 
Note, I understand that XML libraries for Rust already exist. This is intended as a learning tool for working with string manipulations inside vanilla Rust.
Edit:
I thought using regex to parse XML may be a good idea. I was wrong.
xml rust
 
 
 
 
 
 
 I understand a Regex library may be a better option â not for parsing XML, please. I recommend my own Rust XML library, sxd-document.
 â Shepmaster
 Feb 24 at 19:11
 
 
 
 
 
 1
 
 
 
 
 a little too C++ currently â can you explain what about this feels like C++?
 â Shepmaster
 Feb 24 at 19:12
 
 
 
 
 
 
 
 
 
 @Shepmaster As a style, more declarative than functional. I've seen that Rust provides a more concise syntax, in general, for most tasks.
 â John Stritenberger
 Feb 24 at 19:24
 
 
 
add a comment |Â
up vote
1
down vote
favorite
up vote
1
down vote
favorite
The following is a struct to extract a value between named XML element tags. Though it works, I feel there is functional approach in Rust that I am missing. Any other tips on Rust preferred styling are also appreciated.
pub struct XmlDoc 
 doc: String,
impl XmlDoc 
 pub fn new(doc: String) -> XmlDoc 
 XmlDoc doc 
 
 pub fn get_value(&self, element: &str) -> String 
 let begin_tag = format!("<>", element);
 let end_tag = format!("</>", element);
 let value_begin = self.doc.find::<&str>(begin_tag.as_str()).unwrap();
 let value_end = self.doc.find::<&str>(end_tag.as_str()).unwrap();
 self.doc[value_begin + begin_tag.len()..value_end].to_string()
 
mod tests 
 use super::*;
 #[test]
 fn get_value() 
 let xml = XmlDoc::new("<element>value</element>".to_string());
 let value = xml.get_value("element");
 assert_eq!(value, "value".to_string(), "", value);
 
Note, I understand that XML libraries for Rust already exist. This is intended as a learning tool for working with string manipulations inside vanilla Rust.
Edit:
I thought using regex to parse XML may be a good idea. I was wrong.
xml rust
The following is a struct to extract a value between named XML element tags. Though it works, I feel there is functional approach in Rust that I am missing. Any other tips on Rust preferred styling are also appreciated.
pub struct XmlDoc 
 doc: String,
impl XmlDoc 
 pub fn new(doc: String) -> XmlDoc 
 XmlDoc doc 
 
 pub fn get_value(&self, element: &str) -> String 
 let begin_tag = format!("<>", element);
 let end_tag = format!("</>", element);
 let value_begin = self.doc.find::<&str>(begin_tag.as_str()).unwrap();
 let value_end = self.doc.find::<&str>(end_tag.as_str()).unwrap();
 self.doc[value_begin + begin_tag.len()..value_end].to_string()
 
mod tests 
 use super::*;
 #[test]
 fn get_value() 
 let xml = XmlDoc::new("<element>value</element>".to_string());
 let value = xml.get_value("element");
 assert_eq!(value, "value".to_string(), "", value);
 
Note, I understand that XML libraries for Rust already exist. This is intended as a learning tool for working with string manipulations inside vanilla Rust.
Edit:
I thought using regex to parse XML may be a good idea. I was wrong.
xml rust
edited Feb 25 at 15:43
asked Feb 24 at 19:09


John Stritenberger
21419
21419
 
 
 
 
 
 
 I understand a Regex library may be a better option â not for parsing XML, please. I recommend my own Rust XML library, sxd-document.
 â Shepmaster
 Feb 24 at 19:11
 
 
 
 
 
 1
 
 
 
 
 a little too C++ currently â can you explain what about this feels like C++?
 â Shepmaster
 Feb 24 at 19:12
 
 
 
 
 
 
 
 
 
 @Shepmaster As a style, more declarative than functional. I've seen that Rust provides a more concise syntax, in general, for most tasks.
 â John Stritenberger
 Feb 24 at 19:24
 
 
 
add a comment |Â
 
 
 
 
 
 
 I understand a Regex library may be a better option â not for parsing XML, please. I recommend my own Rust XML library, sxd-document.
 â Shepmaster
 Feb 24 at 19:11
 
 
 
 
 
 1
 
 
 
 
 a little too C++ currently â can you explain what about this feels like C++?
 â Shepmaster
 Feb 24 at 19:12
 
 
 
 
 
 
 
 
 
 @Shepmaster As a style, more declarative than functional. I've seen that Rust provides a more concise syntax, in general, for most tasks.
 â John Stritenberger
 Feb 24 at 19:24
 
 
 
I understand a Regex library may be a better option â not for parsing XML, please. I recommend my own Rust XML library, sxd-document.
â Shepmaster
Feb 24 at 19:11
I understand a Regex library may be a better option â not for parsing XML, please. I recommend my own Rust XML library, sxd-document.
â Shepmaster
Feb 24 at 19:11
1
1
a little too C++ currently â can you explain what about this feels like C++?
â Shepmaster
Feb 24 at 19:12
a little too C++ currently â can you explain what about this feels like C++?
â Shepmaster
Feb 24 at 19:12
@Shepmaster As a style, more declarative than functional. I've seen that Rust provides a more concise syntax, in general, for most tasks.
â John Stritenberger
Feb 24 at 19:24
@Shepmaster As a style, more declarative than functional. I've seen that Rust provides a more concise syntax, in general, for most tasks.
â John Stritenberger
Feb 24 at 19:24
add a comment |Â
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f188284%2ffinding-an-xml-element-value-using-rust%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
I understand a Regex library may be a better option â not for parsing XML, please. I recommend my own Rust XML library, sxd-document.
â Shepmaster
Feb 24 at 19:11
1
a little too C++ currently â can you explain what about this feels like C++?
â Shepmaster
Feb 24 at 19:12
@Shepmaster As a style, more declarative than functional. I've seen that Rust provides a more concise syntax, in general, for most tasks.
â John Stritenberger
Feb 24 at 19:24