func ExampleHandleSOAPArrayType() { doc := xsdfile(` <complexType name="BoolArray"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xs:boolean[]"/> </restriction> </complexContent> </complexType>`) var cfg xsdgen.Config cfg.Option(xsdgen.HandleSOAPArrayType()) out, err := cfg.GenSource(doc) if err != nil { log.Fatal(err) } fmt.Printf("%s\n", out) // Output: package ws // // type BoolArray struct { // Offset ArrayCoordinate `xml:"offset,attr"` // Id string `xml:"id,attr"` // Href string `xml:"href,attr"` // Items []bool `xml:",any"` // } }
func ExampleSOAPArrayAsSlice() { doc := xsdfile(` <complexType name="BoolArray"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xs:boolean[]"/> </restriction> </complexContent> </complexType>`) var cfg xsdgen.Config cfg.Option( xsdgen.HandleSOAPArrayType(), xsdgen.SOAPArrayAsSlice(), xsdgen.IgnoreAttributes("offset", "id", "href")) out, err := cfg.GenSource(doc) if err != nil { log.Fatal(err) } fmt.Printf("%s\n", out) // Output: package ws // // import "encoding/xml" // // type BoolArray []bool // // func (a *BoolArray) MarshalXML(e *xml.Encoder, start xml.StartElement) error { // tag := xml.StartElement{Name: xml.Name{"", "item"}} // for _, elt := range *a { // if err := e.EncodeElement(elt, tag); err != nil { // return err // } // } // return nil // } // func (a *BoolArray) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error) { // var tok xml.Token // var itemTag = xml.Name{"", ",any"} // for tok, err = d.Token(); err == nil; tok, err = d.Token() { // if tok, ok := tok.(xml.StartElement); ok { // var item bool // if itemTag.Local != ",any" && itemTag != tok.Name { // err = d.Skip() // continue // } // if err = d.DecodeElement(&item, &tok); err == nil { // *a = append(*a, item) // } // } // if _, ok := tok.(xml.EndElement); ok { // break // } // } // return err // } }
func ExampleConfig_GenCLI() { var cfg xsdgen.Config cfg.Option( xsdgen.IgnoreAttributes("id", "href", "offset"), xsdgen.IgnoreElements("comment"), xsdgen.PackageName("webapi"), xsdgen.Replace("_", ""), xsdgen.HandleSOAPArrayType(), xsdgen.SOAPArrayAsSlice(), ) if err := cfg.GenCLI("webapi.xsd", "deps/soap11.xsd"); err != nil { log.Fatal(err) } }