Я пытаюсь разархивировать файл XML, но он не находит мой корневой узел snapshot
, что не дает мне возможности разархивировать оставшуюся часть моего файла.
Я звоню parser.go
из main.go
, а также функция Validate
.
parser.go
type Parser struct {
file *ConfigXML
filepath string
}
//Load the file
func (parser *Parser) Load() error {
b, err := helpers.LoadFile(parser.filepath)
if err != nil {
return err
}
parser.file = nil
xml.Unmarshal(b, &parser.file)
return nil
}
func (parser *Parser) Validate() error {
if len(parser.file.snapshot) == 0 {
return fmt.Errorf("node snapshot does not exist")
}
return nil
}
Пока мой XML-файл большой, я будуопубликовать фрагмент:
<?xml version='1.0' encoding='UTF-8'?>
<snapshot>
<ENBEquipment id="233443234543" model="XYZ" version="LR_16_02_L">
<attributes>
<administrativeState>unlocked</administrativeState>
</attributes>
</ENBEquipment>
</snapshot>
Структуры, которые я создал, чтобы разобрать:
type ConfigXML struct {
snapshot []Snapshot
FileName string
}
// Snapshot is root <snapshot>
type Snapshot struct {
ENBEquipment []ENBEquipment
}
// ENBEquipment subtag of <snapshot> -> <ENBEquipment>
type ENBEquipment struct {
ID string `xml:"id,attr"`
DeviceName string `xml:"id,attr"`
SoftwareVersion string `xml:"version,attr"`
ElementType string `xml:"model,attr"`
Enb []Enb
}
Однако, когда я пытаюсь запустить с go run main.go
, я получаю:
ERRO[2018-06-12 09:45:34] parsing failed error="node snapshot does not exist" filename=/tmp/datain/xyz/123/agg/233443234543.xml
Если я уберу Валидацию snapshot
, файл будет отменен.Почему это не найти узел?