登录
首页 >  Golang >  Go问答

如何验证 XML

来源:stackoverflow

时间:2024-04-22 08:00:30 174浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《如何验证 XML》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我是 go 新手,我正在尝试验证 xml,但我无法做到这一点。以下是我尝试过的方法,但它不起作用。有什么办法可以做到吗?

func parsexml(xml_path string) {
    xmlfile, err := os.open(xml_path)
    if err != nil {
        panic(err)
    } 
    // defer the closing of our xmlfile so that we can parse it later on
    defer xmlfile.close()
    // read our opened xmlfile1 as a byte array. here i am checking if the file is valid or not
    bytevalue, err := ioutil.readall(xmlfile)
    if err != nil {
        panic(fmt.sprintf("%s file reading failed \n",xml_path))
    } 
}

虽然我传递了一个无效的 xml 文件,但之后我并没有感到恐慌

byteValue, err := ioutil.ReadAll(xmlFile)

解决方案


遗憾的是,您不能只使用 xml.unmarshal,因为这会在第一个元素关闭后停止解析。示例:

func isvalid(s string) bool {
    return xml.unmarshal([]byte(s), new(interface{})) == nil
}

func main() {
    // prints "true".
    fmt.println(isvalid("<<<<<<<"))
}

但是,您可以重复解码元素,直到发生非 io.eof 错误:

func IsValid(input string) bool {
    decoder := xml.NewDecoder(strings.NewReader(input))
    for {
        err := decoder.Decode(new(interface{}))
        if err != nil {
            return err == io.EOF
        }
    }
}

今天关于《如何验证 XML》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>