douzao9845 2014-12-17 14:14 采纳率: 0%
浏览 138
已采纳

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

My XML looks something like this:

<a>
  <b>
    <c>
      <d>TEXT</d>
   </c>
  </b>
</a>

I know how to separate this code via the xml.Unmarshal function, but is there any way to perform the Unmarshal action only to a certain depth? For example, if I wanted to get a string that says "TEXT" and pass that into another function? I tried giving a child charset object, but it still tries to parse the rest of the XML...

  • 写回答

2条回答 默认 最新

  • dongpao1873 2014-12-17 14:57
    关注

    I think this is what you are asking (consider your comment as well).

    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
    ", v.Value)
    }
    

    Output:

    Value: TEXT
    

    UPDATE: after lanZG's comment

    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
    ", v.B.Value)
    }
    

    Output:

    Value: 
                    <c>
                        <d>TEXT</d>             
                    </c>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 saber软件导入Ibis模型报错
  • ¥15 商城生产日期批次库存问题
  • ¥15 esp8266控制共阳极wrgb灯板无法关闭所有led灯
  • ¥100 python读取速度问题
  • ¥15 stm32f407使用DMA问题
  • ¥15 您好 这个API接口该怎么弄 网站搭建好了 API也有 现在就不知道该怎么填写API 不知道怎么用
  • ¥88 用uniapp写一个多端的程序,用到高德地图,用高德的JSAPI吗?
  • ¥20 关于#c++#的问题:水果店管理系统
  • ¥30 dbLinq最新版linq sqlite
  • ¥20 对D盘进行分盘之前没有将visual studio2022卸载掉,现在该如何下载回来