package main
import (
"bytes"
"encoding/xml"
"fmt"
"io/ioutil"
)
func main() {
// 使用 ioutil.ReadFile 函数读取名为"FindShortPath.csproj"的 XML 文件的内容,并将内容存储在 content 变量中。
content, err := ioutil.ReadFile("FindShortPath.csproj")
// 这个文件csdn资源里面有
if err != nil {
fmt.Println("Error reading file:", err)
return
}
// 创建一个 XML 解析器,用于逐行解析 XML 内容。
decoder := xml.NewDecoder(bytes.NewBuffer(content))
var t xml.Token
var initemGroup bool
// 循环:不断循环,直到无法继续读取 XML 内容。
for {
t, err = decoder.Token()
if err != nil {
break
}
// 根据 xml.Token 的具体类型进行处理。
switch token := t.(type) {
// 当解析到 XML 的起始元素时,获取该节点的名称并打印输出
case xml.StartElement:
name := token.Name.Local//xml名称
//问题:找到Compile。先设置var initemGroup bool。然后如果找到了ItemGroup就设置initemGroup
//为true.因为在ItemGroup里面有Compile。然后重新来一遍。找到了Compile输出,然后有头有尾。设置initemGroup为原样.
if initemGroup {
if name == "Compile" {
fmt.Println(name)
}
} else {
if name == "ItemGroup" {
initemGroup = true
}
}
case xml.EndElement:
if initemGroup {
if token.Name.Local == "ItemGroup" {
initemGroup = false
}
}
}
}
// 用户输入
var input string
fmt.Println("请输入:")
fmt.Scanln(&input)
fmt.Println("你输入的是:", input)
}