1234567891011121314151617181920212223 |
- package shared
- import (
- "io"
- "golang.org/x/text/transform"
- )
- // NewXMLSanitizerReader creates an io.Reader that
- // wraps another io.Reader and removes illegal xml
- // characters from the io stream.
- func NewXMLSanitizerReader(xml io.Reader) io.Reader {
- isIllegal := func(r rune) bool {
- return !(r == 0x09 ||
- r == 0x0A ||
- r == 0x0D ||
- r >= 0x20 && r <= 0xDF77 ||
- r >= 0xE000 && r <= 0xFFFD ||
- r >= 0x10000 && r <= 0x10FFFF)
- }
- t := transform.Chain(transform.RemoveFunc(isIllegal))
- return transform.NewReader(xml, t)
- }
|