【发布时间】:2018-01-22 12:23:38
【问题描述】:
我有一个 example.xml 文件,其中包含以下内容:
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<Worksheet ss:Name="Master Sheet">
</Worksheet>
</Workbook>
我有以下 Perl 代码来解析该文件:
use strict;
use warnings 'all';
use XML::LibXML;
my $filename = 'example.xml';
my $dom = XML::LibXML->load_xml(location => $filename);
my $xpc = XML::LibXML::XPathContext->new($dom);
$xpc->registerNs('ss', 'urn:schemas-microsoft-com:office:spreadsheet');
my $match1 = $xpc->findnodes('//Worksheet/ss:Name');
print "XPath $match1\n";
我尝试了许多变体来提取字符串“Master Sheet”,但无济于事。有人可以请教吗?
【问题讨论】:
-
如果您确实需要匹配多个命名空间,您可以使用
registerNs注册两个不同的前缀。请记住,使用registerNs注册并在 XPath 中使用的前缀与在 XML 中使用的前缀(如果有)无关。
标签: excel perl xml-parsing