2010-07-27 3 views
8

xml 패키지 (http://golang.org/pkg/xml/)를 사용하여 Go에서 XML 파일을 읽으려고합니다.Go를 사용하여 XML 요소의 내부 텍스트 읽기

제 문제는 요소의 내부 텍스트를 읽는 방법을 모르겠다는 것입니다. xml.Parser에 문서를로드 한 다음 parser.Token()을 호출하여 파일을 이동합니다.

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

놀랍습니다. 나는 이것을 위해 언어 규격을 감추고는했지만 결코 그것을 보지 못했다. 이제 실제로 앉아서 실제로 스펙을 자세히 읽어야합니다. –

관련 문제