gpt4 book ai didi

xml - 所有 XML 文本的 TrimSpaces

转载 作者:数据小太阳 更新时间:2023-10-29 03:30:51 27 4
gpt4 key购买 nike

我正在从我无法控制的外部 Web 服务中检索 XML 字符串。一些数据包含空格 <data> I have leading white space</data> .如何修剪 XML 字符串中每个元素的空格?

最佳答案

您可以使用 encoding/xml 包中的原语动态修改 XML 流。在这种情况下实现 xml.TokenReader是一个简单的解决方案:

import (
"bytes"
"encoding/xml"
)

type Trimmer struct {
dec *xml.Decoder
}

func (tr Trimmer) Token() (xml.Token, error) {
t, err := tr.dec.Token()
if cd, ok := t.(xml.CharData); ok {
t = xml.CharData(bytes.TrimSpace(cd))
}
return t, err
}

Trimmer 包装底层解码器并返回修改后的 token 流。 xml.CharData 表示文本节点。每当遇到一个,bytes.TrimSpace被调用以修剪前导和尾随空格。所有其他 token 均未修改地返回。

xml.NewTokenDecoderTrimmer 变回常规解码器:

import (
"encoding/xml"
"fmt"
"io"
"log"
)

var r io.Reader // data source
raw := xml.NewDecoder(r) // regular decoder
dec := xml.NewTokenDecoder(Trimmer{raw}) // trimming decoder

var v MyType
err := dec.Decode(&v)

关于xml - 所有 XML 文本的 TrimSpaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54096876/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com