गो

2010-07-27 12 views
8

का उपयोग कर एक्सएमएल तत्व के आंतरिक पाठ को पढ़ना मैं xml पैकेज (http://golang.org/pkg/xml/) का उपयोग कर गो में एक एक्सएमएल फ़ाइल पढ़ने की कोशिश कर रहा हूं।गो

मेरी समस्या यह है कि मुझे यकीन नहीं है कि तत्व के आंतरिक पाठ को कैसे पढ़ा जाए। मैं xml.Parser में दस्तावेज़ लोड करता हूं और फिर फ़ाइल के माध्यम से स्थानांतरित करने के लिए पार्सर को टोकन() कॉल करता हूं।

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 प्रकार के रूप में परिभाषित किया गया है:

type CharData []byte 

लेकिन मैं की एक सरणी के रूप में charData चर का उपयोग नहीं कर पा रहे है कि मैं क्या टोकन का उपयोग किया जाता है निम्नलिखित देखने के लिए जाँच एक स्ट्रिंग में कनवर्ट करने के लिए बाइट्स। CharData के लिए परिभाषित एकमात्र विधि टोकन की प्रतिलिपि बनाना है, लेकिन यह सिर्फ एक CharData चर की एक और प्रति देता है। मैं कुछ चीजें की कोशिश की है, लेकिन वे संकलन नहीं है:

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

वहाँ एक और तरीका बाइट्स का एक टुकड़ा के रूप में xml.CharData चर के इलाज के लिए है?

उत्तर

4

भाषा विशिष्टता के आधार पर, आपको string([]byte(charData)) करने में सक्षम होना चाहिए।

[]byte ->string टाइप रूपांतरण के लिए एक विशेष मामला है। आम तौर पर, नए प्रकार और मूल प्रकार में एक ही अंतर्निहित प्रकार होना चाहिए (यानी xml.CharData और [] बाइट)

+0

आश्चर्यजनक, यह चाल है। मैंने इसके लिए भाषा की कल्पना को छोड़ दिया लेकिन इसे कभी नहीं देखा। अब मुझे वास्तव में बैठना होगा और वास्तव में विस्तार से स्पेक को पढ़ना होगा। –