免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1737 | 回复: 5
打印 上一主题 下一主题

請問一個笨問題 是有關 xml paser hash的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-22 11:50 |只看该作者 |倒序浏览
想請問 我用以下程式碼 要將一個簡單的 xml paser 出來
   use XML::Simple;
   use Data::Dumper;
   $config = XMLin('./200607272300.xml');
   print Dumper($config);


檔案格式如下

<?xml version="1.0"?>
<ROWSET>
<ROW><PROCESS_ID>28727></PROCESS_ID><OPTIME>200607272300</OPTIME>...會再多</ROW>
<ROW><PROCESS_ID>28737></PROCESS_ID><OPTIME>200607272300</OPTIME>...會再多</ROW>
<ROW><PROCESS_ID>28717></PROCESS_ID><OPTIME>200607272300</OPTIME>...會再多</ROW>
</ROWSET>


不過 他出現如下
      $VAR1 = {
                       'ROW' => [
                                 {
                                   'PROCESS_ID' => '28727',
                                    'OPTIME' => '200607272300'
                                    ....會再多出來其他的
                                  }
                                 {
                                   'PROCESS_ID' => '28723',
                                    'OPTIME' => '200607272300'
                                      ....會再多出來其他的
                                }
                                 {
                                   'PROCESS_ID' => '28717',
                                    'OPTIME' => '200607272300'
                                     ....會再多出來其他的
                                 }
                             ]
                         };

我應該要如何做才能 將 'PROCESS_ID'  'OPTIME'  逐筆一個<ROW></ROW>區間讀出來 做其他應用

多謝指導

论坛徽章:
0
2 [报告]
发表于 2006-08-22 13:16 |只看该作者
你可以把他看成一个数组 用下 @$xmlref

论坛徽章:
0
3 [报告]
发表于 2006-08-22 20:29 |只看该作者

回复 1楼 ieting 的帖子

Hi,

the dumper ouput is very clear to indicate that the data structure  is a reference to hashes of hashes. you can access  'PROCESS_ID'  'OPTIME' as following:
i.e.:
foreach my $row ($config->{'ROW'}) {
    print $row->{ 'PROCESS_ID'}. "\n";
    print $row->{'OPTIME'}. "\n";
}


in perldoc XML::Simple there is some methed that can be directly to fetch the nodes of xml tags.

Best,
    ulmer

论坛徽章:
0
4 [报告]
发表于 2006-08-24 15:35 |只看该作者

回复 3楼 ulmer 的帖子

那如果 我的 我要取他的 key值的我應該如何做 key值 = PROCESS_ID        值 = $row->{ 'PROCESS_ID'}

因為會這樣子想是因為 tag 有可能會隨時變動 如果隨時便動一次 就要改一次程式

论坛徽章:
0
5 [报告]
发表于 2006-08-24 16:33 |只看该作者
原帖由 ieting 于 2006-8-24 15:35 发表
那如果 我的 我要取他的 key值的我應該如何做 key值 = PROCESS_ID        值 = $row->{ 'PROCESS_ID'}

因為會這樣子想是因為 tag 有可能會隨時變動 如果隨時便動一次 就要改一次程式


why is so complex? that is simple to fetch xml's data. see demo code:

  1. # $config->{'ROW'} returns ref. to array
  2. foreach my $elem (@{$config->{'ROW'}}) {
  3.     #print  ref $elem , "\n";   # $elem is ref. to hash
  4.     #print Dumper($elem);
  5.     # normally hash processing
  6.     foreach my $key (keys %$elem) {
  7.         print 'key: ' .$key. ' => value: ' . $elem->{$key} . "\n";
  8.     }
  9.     print "\n";
  10. }
复制代码


Best regards,
    ulmer

---------------
Just 4 Fun

[ 本帖最后由 ulmer 于 2006-8-24 16:35 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-08-24 18:28 |只看该作者
多謝~~
已經解決
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP