2010-07-27 31 views
8

Tôi đang cố đọc một tệp XML trong Go bằng gói xml (http://golang.org/pkg/xml/).Đọc văn bản bên trong của một phần tử XML bằng cách sử dụng Go

Vấn đề của tôi là tôi không chắc chắn cách đọc văn bản bên trong của phần tử. Tôi tải tài liệu trong xml.Parser và sau đó gọi parser.Token() để di chuyển qua tệp. Tôi kiểm tra để xem những gì các dấu hiệu được sử dụng như sau:

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? 
} 

Loại xml.CharData được định nghĩa là:

type CharData []byte 

nhưng tôi dường như không thể sử dụng biến charData như một mảng của để chuyển đổi thành chuỗi. Phương thức duy nhất được định nghĩa cho CharData là sao chép mã thông báo, nhưng điều đó chỉ cung cấp một bản sao của biến CharData khác. Tôi đã thử một vài điều nhưng chúng không biên dịch:

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

Có cách nào khác để xử lý biến xml.CharData dưới dạng một lát byte không?

Trả lời

4

Dựa trên thông số ngôn ngữ, bạn có thể thực hiện string([]byte(charData)).

[]byte ->string là trường hợp đặc biệt cho chuyển đổi loại. Thông thường, loại mới và loại gốc phải có cùng loại cơ bản (ví dụ: xml.CharData và [] byte)

+0

Thật tuyệt vời, điều đó đã xảy ra. Tôi tiếp tục lướt qua thông số ngôn ngữ cho điều này nhưng không bao giờ thấy nó. Bây giờ tôi cần phải thực sự ngồi xuống và thực sự đọc chi tiết kỹ thuật. –

Các vấn đề liên quan