From c5c597ff92550e36bad0c3894787814d7314467e Mon Sep 17 00:00:00 2001 From: Greg Colburn Date: Thu, 26 Nov 2015 22:00:23 -0700 Subject: [PATCH] Convert to read from file reader with decoder Change-Id: I58845a612a6853658596154812f954efbbb6f733 --- dmarc.go | 112 ++++++++++++------------------------------------------- 1 file changed, 24 insertions(+), 88 deletions(-) diff --git a/dmarc.go b/dmarc.go index c1cd4d2..d6b27b6 100644 --- a/dmarc.go +++ b/dmarc.go @@ -3,6 +3,7 @@ package main import ( "encoding/xml" "fmt" + "os" ) func main() { @@ -70,96 +71,31 @@ func main() { Record []Record `xml:"record"` } - v := FeedbackReport{} - - data := ` - - - - google.com - noreply-dmarc-support@google.com - https://support.google.com/a/answer/2466580 - 11295852759969162400 - - 1448236800 - 1448323199 - - - - colbs.net - r - r -

reject

- reject - 100 -
- - - 2607:f8b0:400c:c05::249 - 1 - - none - pass - fail - - - - colbs.net - - - - google.com - pass - - - colbs.net - pass - - - calendar-server.bounces.google.com - pass - - - - - - 2a00:1450:400c:c09::235 - 1 - - none - pass - pass - - - - colbs.net - - - - colbs.net - pass - - - colbs.net - pass - - - -
- ` - - err := xml.Unmarshal([]byte(data), &v) + xmlFile, err := os.Open("/Users/gcolburn/go/src/github.com/gc1code/dmarcparser/samples/google.xml") // For read access. if err != nil { - fmt.Printf("error: %v", err) + fmt.Printf("os error: %v", err) return } - fmt.Printf("XMLName: %#v\n", v) - // fmt.Printf("org_name: %#q\n", v.ReportMetadata.OrgName) - // fmt.Printf("domain: %#q\n", v.PolicyPublished.Domain) - // fmt.Printf("Name: %q\n", v.Name) - // fmt.Printf("Phone: %q\n", v.Phone) - // fmt.Printf("Email: %v\n", v.Email) - // fmt.Printf("Groups: %v\n", v.Groups) - // fmt.Printf("Address: %v\n", v.Address) + defer xmlFile.Close() + + decoder := xml.NewDecoder(xmlFile) + var inElement string + for { + t, _ := decoder.Token() + if t == nil { + break + } + switch se := t.(type) { + case xml.StartElement: + inElement = se.Name.Local + if inElement == "feedback" { + var f FeedbackReport + + decoder.DecodeElement(&f, &se) + fmt.Printf("XMLName: %#v\n", f) + } + default: + } + } }