Найти XML-элемента значение с помощью ржавчины


Ниже приводится структура, чтобы извлечь значение между тегами XML-элемента. Хотя это работает, я чувствую, что есть функциональный подход в Русте, что мне не хватает. Любые другие советы по привилегированным ржавчины стиль также приветствуется.

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);
    }
}

Обратите внимание, я понимаю, что XML-библиотек для Rust уже существуют. Это предназначено в качестве учебного пособия для работы со строками внутри ванильный ржавчины.

Редактировать: Я думал, что с помощью regex для разбора XML может быть хорошей идеей. Я был неправ.



144
1
задан 24 февраля 2018 в 07:02 Источник Поделиться
Комментарии