登录
首页 >  Golang >  Go问答

在 Go 语言中根据 xsd 验证 xml 的示例?

来源:stackoverflow

时间:2024-04-14 15:27:39 183浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《在 Go 语言中根据 xsd 验证 xml 的示例?》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我一直在尝试使用不同的 Go 包来根据 xsd 验证 xml,但未能有效地使用它们。

github.com/goxmpp/xml

github.com/lestrrat-go/libxml2

github.com/go-xmlpath/xmlpath

github.com/metaleap/go-xsd/types

我要么编译失败,要么无法安装所需的依赖项。

任何人都可以提供 Go 中可用的包以及一个工作示例来根据指定的架构定义文件 (xsd) 测试任何 xml 吗?


正确答案


以下是一些可用于在 go 中根据 xsd 验证 xml 的包:

xsdvalidate 是一个使用 libxml2 验证 xml 的包。如果您需要快速有效地验证 xml,那么这是一个不错的选择。

go-xsd 是另一个使用 libxml2 验证 xml 的包。它的使用比 xsdvalidate 稍微复杂一些,但它提供了更多功能。

xmlpath 是一个可用于解析和验证 xml 的包。如果您需要进行更复杂的验证,例如检查特定元素或属性是否存在,那么这是一个不错的选择。

以下是使用 xsdvalidate 的代码示例:

package main

import (
    "fmt"
    "github.com/terminalstatic/go-xsd-validate"
)

func main() {
    // Load the XSD file.
    xsdHandler, err := xsdvalidate.NewXsdHandlerFromFile("my_schema.xsd")
    if err != nil {
        panic(err)
    }

    // Load the XML document.
    xmlData, err := ioutil.ReadFile("my_xml.xml")
    if err != nil {
        panic(err)
    }

    // Validate the XML document against the XSD.
    err = xsdHandler.Validate(xmlData)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("XML document is valid")
    }
}

如果您想要其他软件包的示例,请让我知道,然后我可以添加一些内容。

到这里,我们也就讲完了《在 Go 语言中根据 xsd 验证 xml 的示例?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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