perl模块推荐19_XML-Simple
摘要
XML 作为一种可扩展标记语言,在数据传输和交换中得到广泛应用。通过XML::Simple,可以轻松解析XML,提取想要的信息。
代码示例
1 | #!/usr/local/bin/perl |
代码解析
合理使用Dumper,观察数据结构。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66$VAR1 = [
{
'IP' => '10.200.38.208',
'EV' => {
'E2' => '0000',
'T' => 'H',
'D3' => '0000',
'E1' => '0001',
'E3' => '0000',
'D1' => '0000',
'E' => '000246',
'D2' => '0000'
},
'CAID' => '8120010499497722',
'STBID' => '0521607',
'AREACODE' => '1006',
'DATE' => '20160801',
'USERID' => '7817334'
},
{
'USERID' => '8035240',
'AREACODE' => '',
'DATE' => '20160801',
'EV' => [
{
'E5' => '0000',
'T' => 'L',
'D3' => '0000',
'E2' => '0000',
'D2' => '0000',
'E' => '000231',
'E4' => '0000',
'D1' => '0003',
'E3' => '0000',
'E1' => '0000'
},
{
'E4' => '0000',
'E3' => '22223',
'D1' => '0101',
'E1' => '0022',
'D2' => '0223',
'E' => '000235',
'D3' => "\x{5c71}\x{4e1
'T' => 'L',
'E5' => '0000',
'E2' => '0005'
},
{
'E2' => '770',
'E5' => '0',
'T' => 'A',
'D3' => '6',
'D2' => '164',
'E' => '000236',
'D1' => '425',
'E3' => '17',
'E1' => '0003',
'E4' => '1'
}
],
'IP' => '10.225.14.164',
'STBID' => '0390388',
'CAID' => '8120010542807752'
}
];
通过观察我们可以发现,EV 对应的元素只有一个,则对应的是一个hash引用。当EV对应的元素有多个的时候,则对应的是一个hash引用的数组。所以需要通过ref函数判断类型,然后进行对应解析。
如何解析各种引用,可以参考这篇文章。
标记语言(Markup Language)
- HTML,超文本标记语言,旨在显示信息;
- XML,可扩展标记语言,旨在传输信息;
- XHTML,可扩展超文本标记语言,基于XML,作用与HTML类似,但语法更严格。
JSON 是比XML 更轻量级的数据交换格式,数据通过键值对表示,这也决定了JSON 不允许键重复,而XML 和HTML 是允许同级下的元素重复。
JSON 的解析可以参考这篇文章。