本文整理汇总了Golang中encoding/xml.StartElement.Attr方法的典型用法代码示例。如果您正苦于以下问题:Golang StartElement.Attr方法的具体用法?Golang StartElement.Attr怎么用?Golang StartElement.Attr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类encoding/xml.StartElement
的用法示例。
在下文中一共展示了StartElement.Attr方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: MarshalXML
func (a *Argument) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
var err error
startElt := xml.StartElement{Name: xml.Name{Local: "argument"}}
var opt string
if a.Optional {
opt = "yes"
} else {
opt = "no"
}
startElt.Attr = append(startElt.Attr, xml.Attr{Name: xml.Name{Local: "name"}, Value: a.Name})
startElt.Attr = append(startElt.Attr, xml.Attr{Name: xml.Name{Local: "optional"}, Value: opt})
startElt.Attr = append(startElt.Attr, xml.Attr{Name: xml.Name{Local: "type"}, Value: argumentTypeReveseMap[a.Type]})
err = e.EncodeToken(startElt)
if err != nil {
return err
}
err = e.EncodeToken(xml.EndElement{Name: startElt.Name})
if err != nil {
return err
}
return nil
}
示例2: setAttr
func setAttr(n *xml.StartElement, key, val string) {
n.Attr = append([]xml.Attr{}, n.Attr...)
for i := range n.Attr {
attr := &n.Attr[i]
if attr.Name.Local == key {
if val == "" {
n.Attr = append(n.Attr[:i], n.Attr[i+1:]...)
} else {
attr.Value = val
}
return
}
}
if val == "" {
return
}
n.Attr = append(n.Attr, xml.Attr{
Name: xml.Name{Local: key},
Value: val,
})
sort.Sort(attrByName(n.Attr))
}
示例3: marshalDescription
func marshalDescription(eltname string, e *xml.Encoder, desc map[string]template.HTML) error {
var err error
for lang, text := range desc {
startElt := xml.StartElement{Name: xml.Name{Local: eltname}}
startElt.Attr = []xml.Attr{
xml.Attr{Name: xml.Name{Local: "lang"}, Value: lang},
}
err = e.EncodeToken(startElt)
if err != nil {
return err
}
err = e.EncodeToken(xml.CharData(string(text)))
if err != nil {
return err
}
err = e.EncodeToken(xml.EndElement{Name: startElt.Name})
if err != nil {
return err
}
}
return nil
}
示例4: MarshalXML
// MarshalXML implements the xml.Marshaller method to allow for the
// correct wrapper/start element case and attr data.
func (c Change) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
start.Name.Local = "osmChange"
start.Attr = []xml.Attr{
{Name: xml.Name{Local: "version"}, Value: "0.6"},
{Name: xml.Name{Local: "generator"}, Value: "go.osm"},
}
if err := e.EncodeToken(start); err != nil {
return err
}
if err := marshalInnerChange(e, "create", c.Create); err != nil {
return err
}
if err := marshalInnerChange(e, "modify", c.Modify); err != nil {
return err
}
if err := marshalInnerChange(e, "delete", c.Delete); err != nil {
return err
}
if err := e.EncodeToken(start.End()); err != nil {
return err
}
return nil
}
示例5: MarshalXML
func (bagc BiddableAdGroupCriterion) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
start.Attr = append(
start.Attr,
xml.Attr{
xml.Name{"http://www.w3.org/2001/XMLSchema-instance", "type"},
"BiddableAdGroupCriterion",
},
)
e.EncodeToken(start)
e.EncodeElement(&bagc.AdGroupId, xml.StartElement{Name: xml.Name{"", "adGroupId"}})
criterionMarshalXML(bagc.Criterion, e)
if bagc.UserStatus != "" {
e.EncodeElement(&bagc.UserStatus, xml.StartElement{Name: xml.Name{"", "userStatus"}})
}
if bagc.DestinationUrl != "" {
e.EncodeElement(&bagc.DestinationUrl, xml.StartElement{Name: xml.Name{"", "destinationUrl"}})
}
e.EncodeElement(&bagc.BiddingStrategyConfiguration, xml.StartElement{Name: xml.Name{"", "biddingStrategyConfiguration"}})
if bagc.BidModifier != 0 {
e.EncodeElement(&bagc.BidModifier, xml.StartElement{Name: xml.Name{"", "bidModifier"}})
}
e.EncodeToken(start.End())
return nil
}
示例6: attr
func (u *extern) attr(start *xml.StartElement, name string, value interface{}) {
str := func(value string) {
assert.For(value != "", 20)
a := xml.Attr{}
a.Name.Local = name
a.Value = value
start.Attr = append(start.Attr, a)
}
switch v := value.(type) {
case string:
str(v)
case bool:
if v {
str("true")
} else {
str("false")
}
case int:
str(strconv.Itoa(v))
case types.Type:
str(v.String())
default:
halt.As(100, reflect.TypeOf(v), v)
}
}
示例7: encEle
func encEle(n tree.Elem, e *xml.Encoder) error {
ele := xml.StartElement{
Name: n.GetToken().(xml.StartElement).Name,
}
attrs := n.GetAttrs()
ele.Attr = make([]xml.Attr, len(attrs))
for i := range attrs {
ele.Attr[i] = attrs[i].GetToken().(xml.Attr)
}
err := e.EncodeToken(ele)
if err != nil {
return err
}
if x, ok := n.(tree.Elem); ok {
for _, i := range x.GetChildren() {
err := encTok(i, e)
if err != nil {
return err
}
}
}
return e.EncodeToken(ele.End())
}
示例8: MarshalXML
// MarshalXML is a custom marshaller for Duration.
func (dur *Duration) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
start.Attr = []xml.Attr{xml.Attr{Name: xml.Name{Local: "duration"}, Value: dur.Duration.String()},
xml.Attr{Name: xml.Name{Local: "state"}, Value: dur.State},
}
e.EncodeToken(start)
e.EncodeToken(xml.EndElement{Name: start.Name})
return nil
}
示例9: MarshalXML
func (a JobCommandJobRefArguments) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
start.Attr = []xml.Attr{
xml.Attr{xml.Name{Local: "line"}, string(a)},
}
e.EncodeToken(start)
e.EncodeToken(xml.EndElement{start.Name})
return nil
}
示例10: MarshalXML
func (p PList) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
start.Name = xml.Name{Local: "plist"}
start.Attr = []xml.Attr{xml.Attr{Name: xml.Name{Local: "version"}, Value: "1.0"}}
e.EncodeToken(start)
PDict(p).MarshalXML(e, xml.StartElement{})
e.EncodeToken(start.End())
return nil
}
示例11: SetAttribute
// SetAttribute is XML helper that allows to set attribute on a node
func SetAttribute(e xml.StartElement, name, value string) xml.StartElement {
for i := range e.Attr {
if e.Attr[i].Name.Local == name {
e.Attr[i].Value = value
return e
}
}
e.Attr = append(e.Attr, xml.Attr{Name: xml.Name{Local: name}, Value: value})
return e
}
示例12: makeStartXml
func makeStartXml(root *XlsObjNode, enc *xml.Encoder) {
valueList := root.value.([]*XlsObjNode)
token := xml.StartElement{xml.Name{"", root.key}, make([]xml.Attr, 0)}
for _, key := range valueList {
if key.nodeType == ATTR_TYPE {
attr := xml.Attr{xml.Name{"", key.key}, key.value.(string)}
token.Attr = append(token.Attr, attr)
}
}
enc.EncodeToken(token)
}
示例13: MarshalXML
func (nagc NegativeAdGroupCriterion) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
start.Attr = append(
start.Attr,
xml.Attr{
xml.Name{"http://www.w3.org/2001/XMLSchema-instance", "type"},
"NegativeAdGroupCriterion",
},
)
e.EncodeToken(start)
e.EncodeElement(&nagc.AdGroupId, xml.StartElement{Name: xml.Name{"", "adGroupId"}})
criterionMarshalXML(nagc.Criterion, e)
e.EncodeToken(start.End())
return nil
}
示例14: writeOpen
func (s *serverStream) writeOpen() error {
var start xml.StartElement
start.Name = xml.Name{Local: "stream:stream", Space: "jabber:client"}
start.Attr = append(start.Attr,
xml.Attr{Name: xml.Name{Local: "xmlns:stream"}, Value: "http://etherx.jabber.org/streams"},
xml.Attr{Name: xml.Name{Local: "xmlns:xml"}, Value: "http://www.w3.org/XML/1998/namespace"},
xml.Attr{Name: xml.Name{Local: "from"}, Value: s.from},
xml.Attr{Name: xml.Name{Local: "version"}, Value: s.version},
)
if err := s.streamEncoder.EncodeToken(start); err != nil {
return err
}
// xml.Encoder doesn't flush until it generated end tag
// so we flush here to make it send stream's open tag
return s.streamEncoder.Flush()
}
示例15: MarshalXML
func (ncc NegativeCampaignCriterion) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
isNegative := true
//fmt.Printf("processing -> %#v\n",ncc)
start.Attr = append(
start.Attr,
xml.Attr{
xml.Name{"http://www.w3.org/2001/XMLSchema-instance", "type"},
"NegativeCampaignCriterion",
},
)
e.EncodeToken(start)
e.EncodeElement(&ncc.CampaignId, xml.StartElement{Name: xml.Name{"", "campaignId"}})
e.EncodeElement(&isNegative, xml.StartElement{Name: xml.Name{"", "isNegative"}})
criterionMarshalXML(ncc.Criterion, e)
e.EncodeToken(start.End())
return nil
}