概要

  • 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 を読ませない

リンク