OwnedName类型来自哪里?

时间:2015-03-21 07:14:34

标签: xml xml-parsing rust

我正在尝试使用rust-xml解析生锈的XML文件,并且无法匹配标记的名称:

for e in parser.events() {
    match e {
        XmlEvent::StartElement { name, attributes: _, namespace: _ } => {
            match name {
                "LexicalEntry" => {

这是我收到的错误消息:

enter codesrc/main.rs|127 col 21| 127:35 error: mismatched types:
||  expected `xml::name::OwnedName`,
||     found `&'static str`
|| (expected struct `xml::name::OwnedName`,
||     found &-ptr) [E0308]
|| src/main.rs:127                     "LexicalEntry" => {
||                                     ^~~~~~~~~~~~~~
 here

我觉得这很令人惊讶,因为OwnedName标识符并没有出现在我的项目的代码或依赖项中的任何地方(包括生锈源!):

  

$ rgrep OwnedName。二进制文件./woordenboek/src/.main.rs.swp匹配   ./woordenboek/src/main.rs:
  // xml :: name :: OwnedName(" LexicalEntry")=> {二进制文件   ./woordenboek/target/debug/deps/libxml-5882f08ff8adc5e5.rlib匹配

这个我应该匹配的OwnedName类型来自哪里?编译器是否发明了某种类型并出于某种原因将其插入到xml库中?

2 个答案:

答案 0 :(得分:3)

我很抱歉,我还没有把xml-rs的API文档放在任何地方:(我会尽快解决这个问题。

更新修复了该问题,您可以找到最新文档here。例如,这是OwnedName

OwnedName是一个单独的结构,因为XML名称不仅仅是字符串 - 它们由本地名称,名称空间URI和可选前缀组成,因此它们具有特殊的表示形式。要仅检查本地名称,您可以使用local_name OwnedName的{​​{1}}字段:

String

答案 1 :(得分:0)

xml::name::OwnedNamename变体的XmlEvent::StartElement字段的类型,而不是&'static str(字符串文字)。