Как проверить XML - PullRequest
       7

Как проверить XML

0 голосов
/ 26 ноября 2018

Я новичок в 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)

1 Ответ

0 голосов
/ 26 ноября 2018

Ваш код не проверяет синтаксис XML.Ваш код читает файл независимо от того, что он делает.Самый простой способ проверить XML - это пакет xml.

func IsValidXML(data []byte) bool {
    return xml.Unmarshal(data, new(interface{})) != nil
}

Что касается вашего кода, он должен выглядеть следующим образом:

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))
    }

    if !IsValidXML(byteValue) {
        panic("Invalid XML has been input")
    }
}

Для документации xml.Unmarshal посетитеhttps://golang.org/pkg/encoding/xml/#Unmarshal

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...