package main import ( "bytes" "encoding/xml" "fmt" "io/ioutil" ) func main() { content, err := ioutil.ReadFile("vsproj.csproj") decoder := xml.NewDecoder(bytes.NewBuffer(content)) var t xml.Token var inItemGroup bool for t, err = decoder.Token(); err == nil; t, err = decoder.Token() { switch token := t.(type) { case xml.StartElement: name := token.Name.Local if inItemGroup { if name == "Compile" { fmt.Println(getAttributeValue(token.Attr, "Include")) } } else { if name == "ItemGroup" { inItemGroup = true } } case xml.EndElement: } } } func getAttributeValue(attr []xml.Attr, name string) string { for _, a := range attr{ if a.Name.Local == name { return a.Value } } return "" }
获取节点属性