xml - 从 XML 文件中提取标签信息到 Excel 文件

标签 xml excel perl vba parsing

关闭。这个问题需要更多 focused 。它目前不接受答案。












想改进这个问题?更新问题,使其仅通过 editing this post 关注一个问题。


7年前关闭。







Improve this question




我有近 100 个 XML 文件,其中包含标签内的各种存储过程名称。每个文件可能包含多个 SP 或相同的重复。

    <DataSourceName>SQL300</DataSourceName>
    <CommandType>StoredProcedure</CommandType>
    <CommandText>dbDummy.dbo.abc456Audit </CommandText>

我接手了一个项目,将 SQL 服务器数据迁移到 SAS 网格,并将所有 SSRS 报告迁移到 SAS。我将不得不映射所有数据。

是否有任何简单的 Linux/perl/VBA/Python 方法可以一步完成?
我想要类似的东西:
File Name    Stored Procedures
Audit93       dbDummy.dbo.abc456Audit
Audit93       dbDummy.dbo.abc123Audit

我试过:grep、sed、awk、perl、VBA。

这里和其他地方描述的方法。我可以将所有标签信息提取到一个平面文件中,但与我在上面寻找的内容完全不同。我需要一些技术来提取文件名和标签。

如果有人能阐明如何解决这个问题,我将不胜感激。

谢谢!

最佳答案

你可以试试下面的代码:

use strict;
use warnings;
use Excel::Writer::XLSX;

my $dir = $ARGV[0];

opendir(DIR, "$dir") || die "Couldn't open the directory - $!";

my @files = grep(/\.xml$/,readdir(DIR));
my $OutFile = "Output". "\." . "xlsx";
my $workbook  = Excel::Writer::XLSX->new($OutFile);
my $worksheet = $workbook->add_worksheet('SotredProcedures');
# Create a format for the column headings
my $header = $workbook->add_format();
$header->set_bold();
$header->set_color('red');
# Create a Text Wrap format
my $format1 = $workbook->add_format();
$format1->set_text_wrap();


$worksheet->write(0, 0, "Filenames", $header);
$worksheet->write(0, 1, "Stored Procedures", $header);
$worksheet->set_column(0, 1, 12);
$worksheet->set_column(1, 2, 100);

my $row=1;
foreach our $filename (@files){
    my $document = do {
         local $/ = undef;
         open my $fh,'<',$filename or die "Couldn't open the file $filename:$!";
       <$fh>;
      };


      my $checkval = "false";
      while($document =~ /<CommandText>(.*?)<\/CommandText>/isg)
         {
             if($1 ne "")
              {
               $checkval = "true";
               $worksheet->write($row,0,$filename,$format1); 
               $worksheet->write($row,1,$1,$format1);
               $row++;
                  }
              }
         if($checkval eq "false")
           {
              print "No <CommandText> Value in $filename\n";
              }   

        }     

关于xml - 从 XML 文件中提取标签信息到 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30146123/

相关文章:

javascript - 来自 ajax 表单的 XML 请求

java - 如何从 Excel 中的数组列表中收集引用

excel - 在 Excel VBA 宏中创建新行(我做错了什么?)

excel - 计数大于 0 的单元格,如果为空则跳过单元格

perl - 如何在 perl mason CGIHandler 中获取 QUERY_STRING?

perl - 如何使用Perl的 'Digest::CRC'模块计算DNP3 CRC

SQL 服务器 : Replace invalid XML characters from a VARCHAR(MAX) field

java - docx 生成 : putting elements inside ffData (CTFFData)

python - 您可以使用哪些 Python 可访问工具从 XML 文档生成 XSD?

生成 Perl 日期时间?