有意为CDATA部分提供不同的令牌?

时间:2015-09-14 08:50:31

标签: xml go cdata

以下程序中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

0 个答案:

没有答案