rust 和 serde-xml-rs 可以解析来自 XML 文件的注释吗?

Can rust and serde-xml-rs parse comments from XML files?

<foo>
  <!-- 2021-03-17 08:15:00 EST -->
  <row>
     <value>100</value>
  </row>
</foo>

我想从 XML 文件中获取评论,想知道这是否可行,如果可行,如何实现?我没有看到这样的例子。在上面的例子中,我想得到“2021-03-17 08:15:00 EST”

不,目前 serde-xml-rs 不支持解析来自 XML 文件的注释。请参阅源代码中的 here;他们一起跳过评论。

但是有一个开放的 pull request 添加对解析注释的支持。

所以如果你现在想解析评论(免责声明这是不稳定的,因为你使用某人的 github 叉子来做)你可以使用上面拉取请求的作者的叉子这样:

// Cargo.toml contains:
//
// [dependencies]
// serde = {version = "1.0", features = ["derive"]}
// serde-xml-rs = {git = "https://github.com/elmarco/serde-xml-rs.git", branch = "comment"}

use serde::Deserialize;
use serde_xml_rs::from_reader;

#[derive(Debug, Deserialize)]
pub struct Foo {
    #[serde(rename = "$comment")]
    pub date: Option<String>,
    pub row: RowValue,
}

#[derive(Debug, Deserialize)]
pub struct RowValue {
    pub value: i32,
}

fn main() {
    let input = "<foo> \
                   <!-- 2021-03-17 08:15:00 EST --> \
                   <row> \
                      <value>100</value> \
                   </row> \
                 </foo>";

    let foo: Foo = from_reader(input.as_bytes()).unwrap();
    println!("input={:#?}", foo);
}