go 语言学习 ---解析xml
实例1
//main
package main import (
"bytes"
"encoding/xml"
"fmt"
"io/ioutil"
)
//获取属性值
func getAttributeValue(attr []xml.Attr, name string) string {
for _, a := range attr {
if a.Name.Local == name {
return a.Value
}
}
return ""
} func main() {
content, err := ioutil.ReadFile("KYTT.plym")
decoder := xml.NewDecoder(bytes.NewBuffer(content)) var t xml.Token
var inItemGroup bool
for t, err = decoder.Token(); err == nil; t, err = decoder.Token() {
switch token := t.(type) {
case xml.StartElement:
name := token.Name.Local
//fmt.Println(name)
if inItemGroup {
if name == "Window" {
//fmt.Println(name)
fmt.Println(getAttributeValue(token.Attr, "Width"))
} } else {
if name == "Playlist" {
inItemGroup = true
}
}
case xml.EndElement:
if inItemGroup {
if token.Name.Local == "Playlist" {
inItemGroup = false
}
}
}
}
}
KYTT.plym内容
<?xml version="1.0"?>
<PlayProgram X="0" Y="0" Width="1152" Height="512">
<Playlist Type="TimeSegment" Name="常规段1" Date="05/10/2019#05/11/2019" Day="True#True#True#True#True#True#True" Time="22:00:00#07:00:00" IsSpeficTimeZone="False" DiffToUTC="00:00:00" ID="0">
<Context>
<BasicPage>
<Page Name="节目1" PlayType="Order" Duration="00:06:00" PlayTimes="1" BackColor="255#0#0#0" BackgroundImage="" ImageLayout="Stretch" BackMusic="" CustomString="">
<Window Name="通用窗口1" X="0" Y="0" Width="1152" Height="512" Tag="Common">
<Item Type="0">
<Media>
<VideoMedia>
<Name>22.mp4</Name>
<PlayDuration>
<string>0#0#45#13#281</string>
</PlayDuration>
<BeginTime>0001-01-01T00:00:00</BeginTime>
<EndTime>0001-01-01T00:00:00</EndTime>
<Times>-1</Times>
<BackColor>
<string>255#0#0#0</string>
</BackColor>
<BackImagePath />
<BackImageLayout>Stretch</BackImageLayout>
<Opacity>1</Opacity>
<ID>103</ID>
<EnableBorderElement>false</EnableBorderElement>
<BorderElement>
<BorderType>6</BorderType>
<IsClockWise>true</IsClockWise>
<Speed>5</Speed>
<BorderWidth>1</BorderWidth>
<BackColor>
<string>255#255#0#0</string>
</BackColor>
<ForeColor>
<string>255#0#128#0</string>
</ForeColor>
<ColorType>0</ColorType>
<BorderDirectionStyle>0</BorderDirectionStyle>
<BorderSurroundedType>0</BorderSurroundedType>
<BorderUnitData>
<string>424d960000000000000036000000280000002000000001000000010018000000000000000000202e0000202e00000000000000000000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff00000000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff00ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff</string>
</BorderUnitData>
<BorderLeftUnitData>
<string />
</BorderLeftUnitData>
<BorderRightUnitData>
<string />
</BorderRightUnitData>
<BorderBottomUnitData>
<string />
</BorderBottomUnitData>
</BorderElement>
<Tag />
<FinishedMode>PlayInSpecTime</FinishedMode>
<RotateAngle>None</RotateAngle>
<Path>G:\BaiduNetdiskDownload\22.mp4</Path>
<DispRatioType>Full</DispRatioType>
<TxtElement>
<TextFont>
<string>SimSun#12#Regular#Point#12</string>
</TextFont>
<TextColor>
<string>255#255#0#0</string>
</TextColor>
<IsTextEffect>false</IsTextEffect>
<TextEffectType>0</TextEffectType>
<TextEffectColor>
<string>255#255#255#0</string>
</TextEffectColor>
<TextEffectWidth>2</TextEffectWidth>
<TextAlignment>TopLeft</TextAlignment>
</TxtElement>
<IsShowTextElement>false</IsShowTextElement>
<VolumnPercent>100</VolumnPercent>
<RotateType>None</RotateType>
<IsStartFromSpecificPos>false</IsStartFromSpecificPos>
<StartPosition>
<string>0#0#0#0#0</string>
</StartPosition>
<EndPosition>
<string>0#0#45#13#281</string>
</EndPosition>
</VideoMedia>
</Media>
<AdditionalInfo />
</Item>
</Window>
</Page>
</BasicPage>
<GlobalPage>
<Page />
</GlobalPage>
</Context>
</Playlist>
</PlayProgram>
go 语言学习 ---解析xml的更多相关文章
- 解析XML格式数据
		
学习解析XML格式的数据前,搭建一个简单的web服务器,在这个服务器上提供xml文本用于练习. 一.搭建Apache服务器 在Apache官网下载编译好的服务器程序,安装.对于Windows来说127 ...
 - 四、XML语言学习(1)
		
XML语言 1.XML是什么?XML是指可扩展标记语言XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非 ...
 - XML语言学习随笔
		
XML和HTML都是W3C的定制的标准,XML的诞生本身是为了替代不成熟的HTML,但是因为现实的环境,XML替代HTML并未成功.之后W3C为了代码严谨性的决心,又发布了升级版的标记语言XHTML, ...
 - Javaweb学习笔记——使用Jdom解析xml
		
一.前言 Jdom是什么? Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作.它是直接为java编程服务,利用java语言的特性(方法重载,集合 ...
 - ACEXML解析XML文件——我是如何学习并在短时间内掌握一个库的使用方法的
		
最近做的C++项目中需要使用xml文件保存一些信息,程序启动时会读取这些信息.最终经过主程的评测,决定使用ACEXML库来读取解析XML文件. 好吧,至于为什么选择ACEXML库,我就不说了.既然选择 ...
 - 【Android学习笔记】XmlResourceParser解析xml文件
		
最近学习Android时,需要用到解析XML文件里的数据,可以用XmlResourceParser来解析xml文件,正好将此记录下来. XmlResourceParser里常用的字段和方法 首先先给出 ...
 - [置顶] Android学习系列-Android中解析xml(7)
		
Android学习系列-Android中解析xml(7) 一,概述 1,一个是DOM,它是生成一个树,有了树以后你搜索.查找都可以做. 2,另一种是基于流的,就是解析器从头到尾解析一遍xml文件. ...
 - Java学习之路:详细解释Java解析XML四种方法
		
XML如今已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. 对于XML本身的语法知识与技术细节,须要阅读相关的技术文献,这里面包含的内容有DO ...
 - JavaWeb学习日记----XML的解析
		
XML的解析简介: 在学习JavaScript时,我们用的DOM来解析HEML文档,根据HTML的层级结构在内存中分配一个树形结构,把HTML的标签啊,属性啊和文本之类的都封装成对象. 比如:docu ...
 
随机推荐
- 计蒜客 39268.Tasks-签到 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest A.) 2019ICPC西安邀请赛现场赛重现赛
			
Tasks It's too late now, but you still have too much work to do. There are nn tasks on your list. Th ...
 - 处理 MySQL 因为 SLAVE 崩溃导致需要手动跳过 GTID 的问题 | 关于 GTID
			
今天发生了与之前某篇博客相似的问题,有同学在不同步的 binlog 库中使用语句 database.table 命令对表进行 drop 导致 master 丢弃该表但是从库并未能同步到该操作.并且后续 ...
 - Beta冲刺(4/5)
			
队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 讨论校园百科究竟如何实现,并分配了任务 提交记录(全组共用) 接下来的计划 加快校园百科的进度 准备Beta版本的汇报 还 ...
 - presto集成kerberos以及访问集成了kerberos的hive集群
			
1.创建主体 注: 192.168.0.230 为单节点集群 192.168.4.50为kdc服务器 192.168.0.9为客户端 1.1.Kdc服务器创建主体 # kadmin.local -q ...
 - 蚂蚁Pincap头条
			
去年(18年)年底想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer.想着可以总结一下经验,分享一下自己这一段”骑驴找马”过的心路历程.当然,一 ...
 - Unity创作赛车游戏的四款插件
			
本文,我们将介绍其中4款:Racing Game Starter Kit.GeNa 2 .NWH Vehicle Physics.Curvy Splines. Racing Game Starter ...
 - java开源工具包-Jodd框架
			
java开源工具包-Jodd框架 / 2019-07-24 Jodd是一个Java工具包和微型框架,Jodd 工具包含一些实用的工具类和小型框架,增强了 JDK 提供很多强大的功能,可以帮助实现 ...
 - linux centos7 防止暴力破解
			
系统 centos 7.4 系统, 不知道的可以用 cat /etc/redhat-release 查看 利用到了linux 系统的日志,每次我们登陆服务器时,如果有登陆认证失败的情况,会在服务器的/ ...
 - Linux中搜索大于200M的文件
			
Linux中清理磁盘空间时,经常需要找出大于200M的文件. 这个命令可以实现这个功能: find / -size +200M -exec du -h {} \;
 - [Bayes] MCMC (Markov Chain Monte Carlo)
			
不错的文章:LDA-math-MCMC 和 Gibbs Sampling 可作为精进MCMC抽样方法的学习材料. 简单概率分布的模拟 Box-Muller变换原理详解 本质上来说,计算机只能生产符合均 ...