Chinaunix

标题: XML文件解析求助 [打印本页]

作者: lizhixue    时间: 2007-08-20 00:41
标题: XML文件解析求助
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|蓝、银|
谢谢!
作者: Osment    时间: 2007-08-20 00:58
XML:arser

http://cpan.uwinnipeg.ca/htdocs/XML-Parser/XML/Parser.html
作者: alexru    时间: 2007-08-20 10:40
search key words 'XML' in cpan
作者: lizhixue    时间: 2007-08-20 10:42
但该XML文档不是很标准,XML::Simple如何处理???
作者: bulletming    时间: 2007-08-20 17:15
你使用XML::Smart试试吧,如果解析没问题,它可以直接将xml文件直接的转到一个hash数组里边来,然后按你想要的输出print一下就行了吧
作者: lizhixue    时间: 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";
  }
作者: lizhixue    时间: 2007-08-20 23:39
带来另外一个问题,怎么让中文正常显示,求助!!!
作者: lizhixue    时间: 2007-08-20 23:50
假如直接 print @value_desc ,则不会乱码,到底问题是处在XML文件解析,还是HASH数组处理中文有问题??
作者: lizhixue    时间: 2007-08-20 23:58
不好意思,问题解决了,是存储文件的格式出错了,与代码无关。
作者: bulletming    时间: 2007-08-21 00:14
"存储文件的格式出错"是什么意思,你说清楚一点,我们也可以长点见识
作者: Osment    时间: 2007-08-21 16:47
原帖由 bulletming 于 2007-8-21 00:14 发表
"存储文件的格式出错"是什么意思,你说清楚一点,我们也可以长点见识

恩。同意,说明原因方便我们共同进步:)




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2