为了账号安全,请及时绑定邮箱和手机立即绑定

Golang - 如何将 XML 文件的一部分提取为字符串?

Golang - 如何将 XML 文件的一部分提取为字符串?

Go
拉丁的传说 2021-09-10 10:33:07
我的 XML 看起来像这样:<a>  <b>    <c>      <d>TEXT</d>   </c>  </b></a>我知道如何通过 xml.Unmarshal 函数分离这段代码,但是有没有办法只在一定深度内执行 Unmarshal 操作?例如,如果我想获取一个显示“TEXT”的字符串并将其传递给另一个函数?我尝试给一个子字符集对象,但它仍然尝试解析 XML 的其余部分......
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

我认为这就是您要问的(也请考虑您的评论)。


package main


import (

    "encoding/xml"

    "fmt"

)


func main() {

    type Result struct {

        Value  string `xml:"b>c>d"`

    }

    v := Result{"none"}


    data := `

        <a>

            <b>

                <c>

                    <d>TEXT</d>             

                </c>

            </b>

        </a>

    `

    err := xml.Unmarshal([]byte(data), &v)

    if err != nil {

        fmt.Printf("error: %v", err)

        return

    }


    fmt.Printf("Value: %v\n", v.Value)

}

输出:


Value: TEXT

更新:在 lanZG 的评论之后


func main() {

    type InnerResult struct {

        Value string `xml:",innerxml"`

    }


    type Result struct {

        B InnerResult `xml:"b"`

    }

    v := Result{InnerResult{"none"}}


    data := `

        <a>

            <b>

                <c>

                    <d>TEXT</d>             

                </c>

            </b>

        </a>

    `

    err := xml.Unmarshal([]byte(data), &v)

    if err != nil {

        fmt.Printf("error: %v", err)

        return

    }


    fmt.Printf("Value: %v\n", v.B.Value)

}

输出:


Value: 

                <c>

                    <d>TEXT</d>             

                </c>


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信