登录
首页 >  Golang >  Go问答

如何用冒号解组 XML 属性?

来源:Golang技术栈

时间:2023-04-17 07:51:33 387浏览 收藏

哈喽!今天心血来潮给大家带来了《如何用冒号解组 XML 属性?》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到golang,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我正在使用的一些 SVG/XML 文件在属性名称中有破折号和冒号 - 例如:

...

我试图弄清楚如何使用golang'encoding/xml包解组这些属性。虽然虚线属性有效,但带有冒号的属性无效:

[见这里的一个活生生的例子]

package main

import (
    "encoding/xml"
    "fmt"
)

var data = `
lala

`

type Anchor struct {
    DataBind  int    `xml:"data-bind,attr"`  // this works
    XlinkHref string `xml:"xlink:href,attr"` // this fails
}

type Group struct {
    A Anchor `xml:"a"`
}

func main() {
    group := Group{}
    _ = xml.Unmarshal([]byte(data), &group)

    fmt.Printf("%#v\n", group.A)
}

这些看似合法的属性名称;知道如何提取xlink:href吗?谢谢。

正确答案

您的示例片段并不完全正确,因为它不包含前缀的[XML 命名空间](http://www.w3.org/TR/REC-xml- names/)绑定。xlink:你可能想要的是:

lala

您可以使用命名空间 URL 解组此属性:

XlinkHref string `xml:"http://www.w3.org/1999/xlink href,attr"`

是带有命名空间修复的示例程序的更新副本。

理论要掌握,实操不能落!以上关于《如何用冒号解组 XML 属性?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表