免费注册 查看新帖 |

Chinaunix

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

XML文件解析求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-20 00:41 |只看该作者 |倒序浏览
XML文件如下:
<?xml version="1.0" encoding="GB2312"?>
<xml>
<DEVICE_PROFILE>
<DEVICE_ID>0000000000002423</DEVICE_ID><PROPERTY_ID>001001</PROPERTY_ID><VALUE>001001003</VALUE><VALUE_DESC>1800</VALUE_DESC>
<DEVICE_ID>0000000000002423</DEVICE_ID><PROPERTY_ID>001001</PROPERTY_ID><VALUE>001001005</VALUE><VALUE_DESC>1900</VALUE_DESC>
<DEVICE_ID>0000000000002423</DEVICE_ID><PROPERTY_ID>001002</PROPERTY_ID><VALUE>001002001</VALUE><VALUE_DESC>单屏</VALUE_DESC>
<DEVICE_ID>0000000000002423</DEVICE_ID><PROPERTY_ID>001003</PROPERTY_ID><VALUE></VALUE><VALUE_DESC>蓝、银</VALUE_DESC>
</DEVICE_PROFILE>
</xml>
怎么使用Perl解析并输出:
0000000000002423|001001|001001003|1800|
0000000000002423|001001|001001005|1900|
0000000000002423|001002|001002001|单屏|
0000000000002423|001003|001002001|蓝、银|
谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-08-20 00:58 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2007-08-20 10:40 |只看该作者
search key words 'XML' in cpan

论坛徽章:
0
4 [报告]
发表于 2007-08-20 10:42 |只看该作者
但该XML文档不是很标准,XML::Simple如何处理???

论坛徽章:
0
5 [报告]
发表于 2007-08-20 17:15 |只看该作者
你使用XML::Smart试试吧,如果解析没问题,它可以直接将xml文件直接的转到一个hash数组里边来,然后按你想要的输出print一下就行了吧

论坛徽章:
0
6 [报告]
发表于 2007-08-20 23:38 |只看该作者
谢谢!的确可以解析,中文显示乱码,郁闷???代码如下:

#!/usr/local/bin/perl
use strict;
use XML::Smart;
my $XML = XML::Smart->new('test.xml') ;
my $v_property_id;
my $v_value;
my $v_value_desc;

$XML = $XML->{xml} ;

my @device_id = @{$XML->{DEVICE_PROFILE}{DEVICE_ID}} ;
my @property_id = @{$XML->{DEVICE_PROFILE}{PROPERTY_ID}} ;
my @value = @{$XML->{DEVICE_PROFILE}{VALUE}} ;
my @value_desc = @{$XML->{DEVICE_PROFILE}{VALUE_DESC}} ;


foreach my $v_device_id ( @device_id ) {
    $v_property_id = shift(@property_id);
    $v_value = shift(@value);
    $v_value_desc = shift(@value_desc);
    print $v_device_id . "|" . $v_property_id . "|" . $v_value . "|" . $v_value_desc . "|" . "\n";
  }

论坛徽章:
0
7 [报告]
发表于 2007-08-20 23:39 |只看该作者
带来另外一个问题,怎么让中文正常显示,求助!!!

论坛徽章:
0
8 [报告]
发表于 2007-08-20 23:50 |只看该作者
假如直接 print @value_desc ,则不会乱码,到底问题是处在XML文件解析,还是HASH数组处理中文有问题??

论坛徽章:
0
9 [报告]
发表于 2007-08-20 23:58 |只看该作者
不好意思,问题解决了,是存储文件的格式出错了,与代码无关。

论坛徽章:
0
10 [报告]
发表于 2007-08-21 00:14 |只看该作者
"存储文件的格式出错"是什么意思,你说清楚一点,我们也可以长点见识
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP