当前位置: 首页 > 面试题库 >

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

慕容康安
2023-03-14
问题内容

我的XML看起来像这样:

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

我知道如何通过xml.Unmarshal函数分隔此代码,但是有什么方法可以仅在一定深度下执行Unmarshal动作吗?例如,如果我想获取一个表示“
TEXT”的字符串并将其传递给另一个函数?我尝试给一个子字符集对象,但是它仍然尝试解析其余的XML …


问题答案:

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

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>


 类似资料:
  • 我需要从文件夹(文件)中的每个文件提取字符串部分,其扩展名如下:png,jpg,jpeg,png,jpg,jpeg。文件命名约定如下(这是两个不同的文件,但它们唯一的共同点是获取文件名所需的时间戳: airlineCode_partnerCode_invoiceNO_timestamp.fileType fileName.fileType_timestamp 文件名示例: ET_PRH_4_201

  • 我有一个字符串和一个ArrayList。字符串中有几个单词,用空格隔开,例如“firstword second third”。我想将字符串拆分为几个部分,并将“piece”字符串添加到ArrayList中。

  • 我有一个xml,我想提取其中的一部分。但我无法得到它。如果我使用变量并将每个键放入变量中,我可以得到那个部分,但这是一个非常漫长的过程。那幺,是否有任何简短的流程? 下面是 XML : 我想要< code>network link集合中的xml。

  • 我想获取作为提交一部分的所有文件的列表。我有可用的提交ID。 我查看了以下链接 如何使用JGit获取提交的文件列表 并尝试了下面的代码。 和以下代码 使用上面的代码,我得到了分支中存在的所有文件的列表。我需要在提交中删除,修改或添加的文件列表。 使用以下git命令,我成功获得了属于特定提交的文件列表 我想从JGit那里得到同样的东西。 更新:我不想得到两个提交之间的区别,而只是作为提交的一部分更改

  • 我试图根据特定的模式在C#中提取字符串的一部分。 示例: 模式1= 模式2= 谢谢

  • 问题内容: 提取像这样的字符串的整数部分的最佳方法是什么 您如何获得123部分。您可以使用Java的Scanner对其进行破解,还有更好的方法吗? 问题答案: 为什么不只使用正则表达式来匹配所需的字符串部分? 这就是您所需要的,再加上所有需要的字符。 查看http://www.regular-expressions.info/tutorial.html,了解正则表达式的工作原理。 编辑:我想说的是