Чтение внутреннего текста элемента XML с помощью Go - PullRequest
8 голосов
/ 27 июля 2010

Я пытаюсь прочитать XML-файл в Go, используя пакет xml (http://golang.org/pkg/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 как части байтов?

1 Ответ

4 голосов
/ 27 июля 2010

Исходя из спецификации языка, вы должны уметь string([]byte(charData)).

[]byte -> string - особый случай для преобразования типовОбычно новый тип и исходный тип должны иметь один и тот же базовый тип (т. Е. Xml.CharData и [] byte)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...