首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用goquery解析单个元素?

如何使用goquery解析单个元素?
EN

Stack Overflow用户
提问于 2022-08-12 03:06:22
回答 2查看 65关注 0票数 1
代码语言:javascript
复制
<speak><voice name=\"en-US-JennyNeural\"><prosody rate=\"1\">aaaaaaaa<break time=\"5s\"/> bbbb. <br time=\"2s\"/>ccccccdddddddd </prosody></voice></speak>

我使用这段代码来解析和获取:

代码语言:javascript
复制
    doc, err := goquery.NewDocumentFromReader(strings.NewReader(text))
    if err != nil {
        return "", err
    }
    ssml, err := doc.Find("html body").Html()
    if err != nil {
        return "", err
    }

结果:

代码语言:javascript
复制
<speak><voice name="en-US-JennyNeural"><prosody rate="1">aaaaaaaa<break time="5s"> bbbb. <br time="2s"/>ccccccdddddddd </break></prosody></voice></speak>

我认为断续不能正确解析。我想像解析<break/>一样解析<br/>

EN

回答 2

Stack Overflow用户

发布于 2022-08-12 08:49:27

假设您使用的是github.com/PuerkitoBio/goquery,它使用golang.org/x/net/html进行HTML解析,这是一个符合HTML 5的标记器和解析器。

<br><break>的解析方式不同,因为在HTML中,<br>是一个不能带有结束标记的标记,但<break>不是这样的标记。

如果希望goquery正确处理HTML,则必须为<break>使用显式结束标记,而不是自结束标记。

例如:而不是这样:

代码语言:javascript
复制
<break time="5s"/>

您必须使用这个:

代码语言:javascript
复制
<break time="5s"></break>

通过此更改,您的输出将是(在围棋游乐场上尝试它):

代码语言:javascript
复制
<speak><voice name="en-US-JennyNeural"><prosody rate="1">aaaaaaaa<break time="5s"></break> bbbb. <br time="2s"/>ccccccdddddddd </prosody></voice></speak>
票数 0
EN

Stack Overflow用户

发布于 2022-08-17 02:52:44

代码语言:javascript
复制
    d := xml.NewDecoder(strings.NewReader(text))
    var writer bytes.Buffer
    e := xml.NewEncoder(&writer)
    for {
        t, err := d.Token()
        if err == io.EOF {
            break
        }
        if err != nil {
            return "", err
        }
        if t == nil {
            break
        }
        switch se := t.(type) {
        case xml.StartElement:
            e.EncodeToken(se)

        case xml.EndElement, xml.CharData, xml.Comment, xml.ProcInst, xml.Directive:
            e.EncodeToken(se)
        }
    }
    e.Flush()

    return writer.String(), nil
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73328858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档