Я пытаюсь отменить запрос ответа из базы данных белка (pdb). Я читал в пакете XML-кодировки Go и понимаю, как обрабатывать теги, но я не знаю, как обрабатывать вложенные теги. Я получаю вывод из кода ниже (вырез);Как обрабатывать вложенные теги XML в Go?
<PDBdescription>
<PDB structureId="4HHB"....
</PDBdescription>
Как я могу получить информацию о структуре? похоже, что он связан с PDB-тегом, который находится в теге PDBdescription-tag?
// pdbRequest
package main
import (
"fmt"
"net"
"encoding/xml"
//"strings"
)
type PDB struct {
id string `xml:"PDBdescription">"PDB structureId"`
XMLName xml.Name
}
func main() {
conn, err := net.Dial("tcp", "www.rcsb.org:http")
p := PDB{id:"NONE"}
if err != nil {
return
}
fmt.Fprintf(conn, "GET /pdb/rest/describePDB?structureId=4hhb HTTP/1.0\r\n\r\n")
status := make([]byte, 10000)
conn.Read(status)
xml.Unmarshal([]byte(status), &p)
fmt.Println(string(status))
fmt.Println(p.id)
}
Я вижу, что мой вопрос очень похож на другие вопросы здесь (положить в ссылках ссылке в ближайшее время), но ответы, приведенные там, кажется, не мое решение, потому что мой тег немного отличается.
XML в сторону, почему вы используете 'net.Dial' для запросов HTTP? – nemo
Возможно, вам будет легче ответить на этот вопрос, если вы сделаете свой образец кода подходящим для игр. Вместо того, чтобы извлекать данные из URL-адреса, поместите некоторые данные примера в многострочную строку и передайте это в xml.Unmarshal. Затем поместите все это на play.golang.org и добавьте эту ссылку на свой вопрос. – MatrixFrog
@nemo. Я просто предпочитаю использовать net.Dial для контакта с мышью «низкого уровня». – stian