我想從蛋白質數據庫(pdb)解組查詢響應。我一直在閱讀Go的XML編碼包,並瞭解如何處理標籤,但我不知道如何處理嵌套標籤。我從下面的代碼得到輸出(cutout);如何在Go中處理嵌套的XML標籤?
<PDBdescription>
<PDB structureId="4HHB"....
</PDBdescription>
如何獲得有關structureId的信息?因爲它似乎連接到PDB-tag內的PDB-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