...

Source file src/github.com/aws/smithy-go/encoding/xml/array.go

Documentation: github.com/aws/smithy-go/encoding/xml

     1  package xml
     2  
     3  // arrayMemberWrapper is the default member wrapper tag name for XML Array type
     4  var arrayMemberWrapper = StartElement{
     5  	Name: Name{Local: "member"},
     6  }
     7  
     8  // Array represents the encoding of a XML array type
     9  type Array struct {
    10  	w       writer
    11  	scratch *[]byte
    12  
    13  	// member start element is the array member wrapper start element
    14  	memberStartElement StartElement
    15  
    16  	// isFlattened indicates if the array is a flattened array.
    17  	isFlattened bool
    18  }
    19  
    20  // newArray returns an array encoder.
    21  // It also takes in the  member start element, array start element.
    22  // It takes in a isFlattened bool, indicating that an array is flattened array.
    23  //
    24  // A wrapped array ["value1", "value2"] is represented as
    25  // `<List><member>value1</member><member>value2</member></List>`.
    26  
    27  // A flattened array `someList: ["value1", "value2"]` is represented as
    28  // `<someList>value1</someList><someList>value2</someList>`.
    29  func newArray(w writer, scratch *[]byte, memberStartElement StartElement, arrayStartElement StartElement, isFlattened bool) *Array {
    30  	var memberWrapper = memberStartElement
    31  	if isFlattened {
    32  		memberWrapper = arrayStartElement
    33  	}
    34  
    35  	return &Array{
    36  		w:                  w,
    37  		scratch:            scratch,
    38  		memberStartElement: memberWrapper,
    39  		isFlattened:        isFlattened,
    40  	}
    41  }
    42  
    43  // Member adds a new member to the XML array.
    44  // It returns a Value encoder.
    45  func (a *Array) Member() Value {
    46  	v := newValue(a.w, a.scratch, a.memberStartElement)
    47  	v.isFlattened = a.isFlattened
    48  	return v
    49  }
    50  

View as plain text