以下程序中CDATA部分的额外标记是否有特殊用途?
package main
import (
"encoding/xml"
"fmt"
"strings"
)
func main() {
src := `<root>a<![CDATA[b]]>c</root>`
r := strings.NewReader(src)
dec := xml.NewDecoder(r)
for {
tok, err := dec.Token()
if err != nil {
fmt.Println(err)
break
}
fmt.Printf("%#v\n", tok)
}
}
https://play.golang.org/p/JRXUztgrfo
输出
xml.StartElement{Name:xml.Name{Space:"", Local:"root"}, Attr:[]xml.Attr{}}
xml.CharData{0x61}
xml.CharData{0x62}
xml.CharData{0x63}
xml.EndElement{Name:xml.Name{Space:"", Local:"root"}}
EOF
但我希望像
这样的东西xml.StartElement{Name:xml.Name{Space:"", Local:"root"}, Attr:[]xml.Attr{}}
xml.CharData{0x61, 0x62, 0x63}
xml.EndElement{Name:xml.Name{Space:"", Local:"root"}}
EOF
因为CDATA部分应该是透明的。对此有什么推理吗?
从用户的角度来看,a<![CDATA[b]]>c
应该相当于abc
。