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

解组转义的XML

谷梁玺
2023-03-14
问题内容

在Go中,我将如何解码该XML响应?我尝试UnMarshal在自己的Answer结构上构建自定义方法,但是运气不高。

<?xml version="1.0"?>
<GetAssignmentResponse>
    <Answer>&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
        &lt;QuestionFormAnswers xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2005-10-01/QuestionFormAnswers.xsd"&gt;
        &lt;Answer&gt;
        &lt;QuestionIdentifier&gt;Q1HasEvents&lt;/QuestionIdentifier&gt;
        &lt;FreeText&gt;no&lt;/FreeText&gt;
        &lt;/Answer&gt;
        &lt;/QuestionFormAnswers&gt;
    </Answer>
</GetAssignmentResponse>

问题答案:

像这样两次解码(在操场上尝试)

package main

import (
    "encoding/xml"
    "fmt"
)

var data = `<?xml version="1.0"?>
<GetAssignmentResponse>
    <Answer>&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
        &lt;QuestionFormAnswers xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2005-10-01/QuestionFormAnswers.xsd"&gt;
        &lt;Answer&gt;
        &lt;QuestionIdentifier&gt;Q1HasEvents&lt;/QuestionIdentifier&gt;
        &lt;FreeText&gt;no&lt;/FreeText&gt;
        &lt;/Answer&gt;
        &lt;/QuestionFormAnswers&gt;
    </Answer>
</GetAssignmentResponse>`

type Response struct {
    XMLName xml.Name `xml:"GetAssignmentResponse"`
    Answer  string   `xml:"Answer"`
}

type Answer struct {
    XMLName  xml.Name `xml:"QuestionFormAnswers"`
    FreeText string   `xml:"FreeText"`
}

func main() {
    v := Response{}
    err := xml.Unmarshal([]byte(data), &v)
    if err != nil {
        fmt.Printf("error: %v", err)
        return
    }
    fmt.Printf("Answer = %q\n", v.Answer)
    a := Answer{}
    err = xml.Unmarshal([]byte(v.Answer), &a)
    if err != nil {
        fmt.Printf("error: %v", err)
        return
    }
    fmt.Printf("Answer = %#v\n", a)
}


 类似资料:
  • 问题内容: 想象以下情况:我们从某个外部工具收到一个xml文件。最近,在此xml中,节点名称中或它们的richcontent标记中可能有一些转义的字符,如以下示例所示(简化): 在使用JAXB解组文件后,那些逃脱的字符将不被转义。不幸的是,我需要他们保持原样,这意味着逃脱了。有什么方法可以避免在解组时将这些字符转义? 使用JAXB甚至有可能实现这一目标,还是我们甚至必须考虑更改为其他xml阅读器A

  • 问题内容: 我在Go中使用Sockjs,但是当javascript客户端将json发送到服务器时,它会对其进行转义,并将其作为[]字节发送。我试图弄清楚如何解析json,以便我可以读取数据。但是我得到这个错误。 json:无法将字符串解组为main.Msg类型的Go值 我怎样才能解决这个问题?html.UnescapeString()无效:/ 问题答案: 您可能要先在JSON字符串上使用:) 这是

  • 我需要使用xquery解码转义的XML,也就是说,我有一个类似

  • 问题内容: 我想将特定节点N的属性X的值解组到struct字段。像这样: http://play.golang.org/p/U6daYJWVUX 据我能够检查,Go不支持此功能。我是正确的,还是我在这里错过了什么? 问题答案: 在您的问题中,您没有提及。我猜您需要将其属性编组为?如果是这样-您可以将A结构更改为以下形式: 甚至更好-定义单独的B结构:

  • 本文向大家介绍PHP实现数组递归转义的方法,包括了PHP实现数组递归转义的方法的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式讲述了PHP实现数组递归转义的方法,分享给大家供大家参考之用。具体方法如下: 主要功能代码如下: 希望本文所述对大家的PHP程序设计有所帮助。

  • 问题内容: 想知道是否有一种简单的方法可以在Objective C中执行简单的HTML转义/转义。我想要的是这样的伪代码: 哪个返回 希望也转义所有其他HTML实体,甚至ASCII码(例如Ӓ等)。 Cocoa Touch / UIKit中有什么方法可以做到这一点? 问题答案: 包含以下解决方案。可可CF具有CFXMLCreateStringByUnescapingEntities函数,但在iPho