提问人:Harshit Saini 提问时间:9/26/2023 最后编辑:Harshit Saini 更新时间:9/27/2023 访问量:70
验证 Golang 中的 XML 数据
validate the xml data in golang
问:
我的任务是查找xml数据中是否缺少任何标签。 像这样是xml数据
<people>
<person>
<id>1</id>
<name>John Doe</name>
<age>30</age>
</person>
<person>
<id>2</id>
<age></age>
</person>
<person>
<id>3</id>
<name></name>
</person>
<person>
<id>4</id>
<address>Chandigarh</address>
</person>
</people>
姓名和年龄标签是强制性的,它们需要在那里 让我们以 id:2 的人为例,这里缺少姓名标签,因此需要打印:“id:2 缺少姓名标签
package main
import (
"encoding/xml"
"fmt"
"io/ioutil"
"log"
"strings"
)
type Person struct {
ID int `xml:"id"`
Name string `xml:"name"`
Age string `xml:"age"`
Address string `xml:"address"`
}
func main() {
xmlData := `
<people>
<person>
<id>1</id>
<name>John Doe</name>
<age>30</age>
</person>
<person>
<id>2</id>
<age></age>
</person>
<person>
<id>3</id>
<name></name>
</person>
<person>
<id>4</id>
<address>Chandigarh</address>
</person>
</people>
`
var people struct {
Persons []Person `xml:"person"`
}
err := xml.Unmarshal([]byte(xmlData), &people)
if err != nil {
log.Fatal(err)
}
missingTags := make(map[string][]int)
for _, person := range people.Persons {
if person.Name == "" {
missingTags["name"] = append(missingTags["name"], person.ID)
}
if person.Age == "" {
missingTags["age"] = append(missingTags["age"], person.ID)
}
if person.Address == "" {
missingTags["address"] = append(missingTags["address"], person.ID)
}
}
for tagName, ids := range missingTags {
fmt.Printf("<%s> is missing for id: %v\n", tagName, ids)
}
}
我试过了这个,但我面临的问题是,如果标签存在但没有像 id:2 中那样的数据,它仍然打印值,年龄标签存在但里面没有数据,但此代码仍然打印它,但我不想打印它,只需要找到丢失的标签
预期输出: ID:2 4 缺少名称 , ID:3 4 的年龄缺失
实际输出: ID: 2 3 4 , ID: 1 2 3 的地址缺失 , ID:2 3 4 缺少名称
答: 暂无答案
评论
expected output
actual output
*string
Unmarshal