在 Go 中解析格式错误的 xml 文件

我有大量 xml 文件要解析,其中包含包裹在封闭标签中的未封闭标签。像下面这样:


<submission>

<first-name>Henry

<last-name>Donald

<id>4224

</submission>

我设置了decoder.Strict = false 但它仍然无法正确解析整个xml 文件。


type Submission struct {

    FirstName string `xml:"first-name"`

    LastName  string `xml:"last-name"`

    ID        string `xml:"id"`

}


func main() {

    dec := xml.NewDecoder(bytes.NewReader([]byte(sub)))

    dec.Strict = false

    dec.AutoClose = xml.HTMLAutoClose

    dec.Entity = xml.HTMLEntity


    var s Submission

    err := dec.Decode(&s)

    if err != nil {

        fmt.Println(err)

    }


    fmt.Println(s)

}

游乐场:https : //play.golang.org/p/-_chEpDhzX


我知道有一个 html tokenizer 可以尝试使用,但我更喜欢使用 XML 包,因为大多数文件的格式都正确。


青春有我
浏览 234回答 2
2回答

慕妹3146593

下面对我有用,如果您知道有问题的标签,这可能只是理想的。虽然,奇怪的是,如果我还添加名字就行不通了。dec.AutoClose = append(dec.AutoClose, "last-name")dec.AutoClose = append(dec.AutoClose, "id")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go