2010-07-27 5 views
8

xml paketini kullanarak (http://golang.org/pkg/xml/) bir XML dosyasını okumaya çalışıyorum.Bir XML öğesinin iç metnini Okuma yöntemini kullanarak oku

Sorunum, bir öğenin iç metnini nasıl okuyacağımı bilmiyorum. Belgeyi xml.Parser dosyasına yükledikten sonra dosya içinde hareket etmek için parser.Token() öğesini çağırın.

token, err := parser.Token() 
if element, ok := token.(xml.StartElement); ok { 
    // process as a start element. I can read the element name and attributes here 
} 

if charData, ok := token.(xml.CharData); ok { 
    // process as text. How do I read the text data? 
} 

xml.CharData tipi olarak tanımlanır:

type CharData []byte 

ama bir dizi olarak KarkVeri değişken kullanın gibi olamaz ben belirteci aşağıdaki kullandığını görmek için kontrol bir dizeye dönüştürmek için bayt. CharData için tanımlanan tek yöntem, belirteci kopyalamaktır, ancak bu yalnızca bir CharData değişkeninin başka bir kopyasını verir. Bir kaç şey denedim ama derlemek yoktur:

innerText := string(charData) 
innerText := string(charData[0:]) 
innerText := string(charData[0]) // this compiled but is not what I want 

bayt bir dilim olarak xml.CharData değişkeni tedavisi için başka bir yolu var mı?

cevap

4

Dil özelliklerine göre, string([]byte(charData)) yapabilmeniz gerekir.

[]byte ->string, tür dönüştürme özel bir durumdur. Normalde, yeni tip ve orijinal türün aynı altta olması gerekir (yani xml.CharData ve [] byte)

+0

Şaşırtıcı, bu hile yaptı. Bunun için dil özelliklerini gözden geçirdim ama hiç görmedim. Şimdi aslında oturmam ve aslında detayları detaylı olarak okumam gerekiyor. –