Table of Contents
Table of Contents
概要
- XPathを使ってXMLを読む。
サンプルXML
ソース
- dumpCXF.pl
#!/usr/local/bin/perl # CxF file からスペクトルの値を抜き出して表示 # by take-ash # 2006.01.13 # 注) 文字コード:UTF-8N、改行:LF で、このperlスクリプトを保存すること。 use strict; use utf8; use XML::XPath; #use Data::Dump qw(dump); my $xp = XML::XPath->new( filename => 'Monitor_6500K.cxf' ); # print dump( $xp ); my $nodeset_samples = $xp->find( '/CXF/SampleSet/Sample' ); foreach my $node_sample ( $nodeset_samples->get_nodelist() ) { my $name = $xp->findvalue( './Name', $node_sample ); printf( "Name:\t%s\n", $name ); my $nodeset_values = $xp->find( './SampleAttribute/Spectrum/Value', $node_sample ); foreach my $node_value ( $nodeset_values->get_nodelist() ) { my $name = $xp->findvalue( './@Name', $node_value ); my $value = $xp->findvalue( '.', $node_value ); printf( "%s\t%s\n", $name, $value ); } print "\n"; } #EOF
XPathモジュールのインストール
ppm install XML-XPath
DTD を読ませない
DTD を読ませないようにするには、LWP を無効化したパーサを指定する。
my $p = XML::Parser->new( NoLWP => 1 ); my $xp = XML::XPath->new( parser => $p, filename => "a.xhtml" );
How can I prevent XML::XPath from fetching a DTD while processing an XML file? - Stack Overflow
リンク
Perl/XML-Simple
CxF Color Exchange Format