gpt4 book ai didi

xml - 如何验证 XML

转载 作者:数据小太阳 更新时间:2023-10-29 03:34:12 27 4
gpt4 key购买 nike

我是 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("<foo></foo><<<<<<<"))
}

但是,您可以重复解码元素,直到发生非 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 - 如何验证 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53476012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com