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

41zrol4v  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(184)

我一直在尝试使用不同的Go软件包来验证xsd中的xml,但没有成功地使用它们。
github.com/goxmpp/xml
github.com/lestrrat-go/libxml2
github.com/go-xmlpath/xmlpath
github.com/metaleap/go-xsd/types
我要么得到编译失败,要么无法安装所需的依赖项。
有人可以提供一个Go语言中可用的包,以及一个工作示例来测试任何xml针对指定的模式定义文件(xsd)?

vvppvyoh

vvppvyoh1#

下面是一些可以用来在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")
    }
}

如果你想要一个例子为其他包请让我知道,然后我可以把一些东西。

相关问题