Go-XPath解析
来源:互联网 发布:dota2多核优化启动项 编辑:程序博客网 时间:2024/05/21 17:02
使用Go做爬虫首先想到了XPath解析来做于是上网搜在github上找到了一个Go写的Xpath的库貌似是官方维护的
官方地址: http://gopkg.in/xmlpath.v1
xmlpath.v1 中只有三个结构体
Node 代表当前解析出来的节点 并且该节点是被处理过的可以被Path访问的
Path 代表指定的寻找路径
Iter Node的集合
这么讲很不清楚还是上代码讲解吧
package mainimport ("fmt""os"xmlpath "gopkg.in/xmlpath.v1")func main() {//nodename()//getFieldValue()getSpecifiedValue()}var file *os.Filevar node *xmlpath.Nodefunc init() {var err errorfile, err = os.OpenFile("t.xml", os.O_RDWR, os.ModePerm)if err != nil {panic("openFile failed!!!")}//解析文件获得经过处理的并且可以被path访问的Node类型的nodenode, err = xmlpath.Parse(file)if err != nil {panic("xmlpath parse file failed!!!")}}func nodename() {//bookstore为根节点编译过后得到一个*Path类型的值path := xmlpath.MustCompile("bookstore")//可能会有多本书所以使用path.Iter(node)获取该节点下面的node集合也就是iteratorit := path.Iter(node)//判断是否有下一个for it.Next() {//如果有把当前的Node节点取出 并打印出值fmt.Println(it.Node().String())}}func getFieldValue() {//选取全文中属性包含@lang的节点 而不管他的位置path := xmlpath.MustCompile("//@lang")it := path.Iter(node)for it.Next() {fmt.Println(it.Node().String())}//选取全文中属性包含lang并且值为en的节点 而不管他的位置path = xmlpath.MustCompile("//*[@lang=\"en\"]")it = path.Iter(node)for it.Next() {fmt.Println(it.Node().String())}}func getSpecifiedValue() {//选取Bookstore中的第二本书的title节点path := xmlpath.MustCompile("/bookstore/book[2]/title")fmt.Println(path.String(node))}
以上为简单的示例 想要深入可以看w3c关于xpath的教程
0 0
- Go-XPath解析
- XPath解析
- Xpath解析
- xpath解析
- xpath解析HTML
- DOM4J+XPath 解析XML
- 使用XPATH解析xml
- android XPath 解析xml
- xpath使用方法解析
- oracle xpath 解析xml
- xpath解析xml
- xpath、dtd解析xml
- XPATH解析XML
- dom4j +xpath 解析问题
- XPath 文档 解析XMl
- 使用XPath解析html
- 使用XPath解析html
- XPath快速解析XML
- 输入a1,a2,...,an,b1,b2,...,bn, 将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn
- relocation R_X86_64_32S against -fPIC
- 不弹出提示框直接导出excel
- spring技术内幕11-JdbcTemplate封装Jdbc
- 编写高质量的Objective-C代码
- Go-XPath解析
- HKEY_LOCAL_MACHINE\Software\WOW6432Node
- HDU 4309 Seikimatsu Occult Tonneru(网络流+枚举状态)
- IOS企业开发者帐号申请
- response.setHeader()的用法
- 修改下拉日历的样式
- js获取节点 dom操作
- Gnu Linux--Ubuntu系统清理项整理
- Ios 常用类库