免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5590 | 回复: 6

请教:如何将standalone="yes"改成encoding="GBK"? [复制链接]

论坛徽章:
0
发表于 2013-09-29 16:23 |显示全部楼层
我刚学perl,使用XML::Generator模块写了一段perl脚本,如下:

#!/usr/bin/perl
# generator.pl
use warnings;
use strict;
use XML::Generator;
my ($xml, $output);
$xml = new XML::Generator ('conformance' => 'strict',    'escape' => 'always',    'pretty' => 2);
$output = $xml->function ({ 'funcname' => 'acl_black_list', 'mode' => 'predefined','no' => 'no'},
$xml->task_name('20130502152226_815403777'),
$xml->device(
         $xml->device_name ('202.197.12.200'),
         $xml->interface_name('GigabitEthernet0/0/2'),
         $xml->host(
                $xml->ip('192.168.45.115'),
                $xml->mask('255.255.255.0')
         )
     )
);
print $xml->xmldecl, "\n$output";
exit (0);

生成的结果如下:

<?xml version="1.0" standalone="yes"?>
<function funcname="acl_black_list" mode="predefined" no="no">
  <task_name>20130502152226_815403777</task_name>
  <device>
    <device_name>202.197.12.200</device_name>
    <interface_name>GigabitEthernet0/0/2</interface_name>
    <host>
      <ip>192.168.45.115</ip>
      <mask>255.255.255.0</mask>
    </host>
  </device>
</function>

但我想要的结果是:

<?xml version="1.0" encoding="GBK"?>
<function funcname="acl_black_list" mode="predefined" no="no">
  <task_name>20130502152226_815403777</task_name>
  <device>
    <device_name>202.197.12.200</device_name>
    <interface_name>GigabitEthernet0/0/2</interface_name>
    <host>
      <ip>192.168.45.115</ip>
      <mask>255.255.255.0</mask>
    </host>
  </device>
</function>


区别就在头部:如何将standalone="yes"改成encoding="GBK",请各位大侠赐教!

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
发表于 2013-09-29 17:25 |显示全部楼层
回复 1# capfsxl
  1.     $xml = new XML::Generator ('conformance' => 'strict',    'escape' => 'always',    'pretty' => 2);
复制代码
  1.     $xml = new XML::Generator ('conformance' => 'strict',    'escape' => 'always',    'pretty' => 2,'encoding'=>'GBK');
复制代码
你要是觉得standalone="yes"多余 就进perl 目录site\lib\XML 下的Generator.pm
找到
  1. my $xml = "<?xml$version$encoding$standalone?>";
复制代码
删掉$standalone

论坛徽章:
0
发表于 2013-09-29 20:08 |显示全部楼层
回复 2# mcshell

感谢,太准确了,药到病除!我还想再请教一个问题,如果我从路由器刷出一段字符串后,才能判断<host>的个数,生成多个<host>并列的xml,在里面循环不行,怎么办呢?
   

论坛徽章:
0
发表于 2013-09-30 07:37 |显示全部楼层
回复 3# capfsxl

起床了,自己先顶一个!
   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
发表于 2013-09-30 12:04 |显示全部楼层
太牛了

论坛徽章:
0
发表于 2013-09-30 12:41 |显示全部楼层
回复 2# mcshell

4楼也夸你呢,:wink: !
   

论坛徽章:
0
发表于 2013-09-30 20:17 |显示全部楼层
不能沉下去呀!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP