ПРИМЕЧАНИЕ: Проблема решена, но, пожалуйста, прочитайте ответ Икегами ниже. Потрясающе информативно, особенно ссылка об избежании XML :: Simple.
Я только начал работать с корпорацией, которая широко использует XML :: Simple, и теперь у нас возникают проблемы с синтаксическим анализом.
Вот пример XML файла ... (обратите внимание, первая часть закомментирована)
<xyz:CostFee>
<ec:OPA>25.00</ec:OPA>
<ec:CTID>278421</ec:CTID>
<xyz:CDEPSID>82</xyz:CDEPSID>
<ec:IID>8765654</ec:IID>
</xyz:CostFee>
Я использую этот простой perl скрипт ....
#!/usr/bin/perl
use XML::Simple;
use Data::Dumper;
my $content = XMLin('./data.xml');
print Dumper($content);
Запуск сценария дает это .....
Undeclared prefix: xyz at /System/Library/Perl/Extras/5.18/XML/NamespaceSupport.pm line 298.
XML::Simple called at ./xml_test.pl line 6.
Когда я использую это в XML файле ...
<catalog>
<part partnum="184324" desc="Desc 1" price="19.00" />
<part partnum="765398" desc="Desc 2" price="18.00" />
<part partnum="878998" desc="Desc 3" price="15.00"/>
</catalog>
Он работает просто отлично, и Dumper с радостью сбрасывает все это .....
Поскольку речь идет об устаревшей программе, замена XML :: Simple не нужна (но, честно говоря, я не думаю, что вы можете зарегистрировать пространство имен в XML :: Просто, но я ни в коем случае не эксперт).
Может кто-нибудь указать мне правильное направление указателем или двумя? Я думаю, что включение информации о пространстве имен в состав XML может быть способом к go, что-то вроде ......
<xsl:stylesheet version="1.0" xmlns:xsl="https://www.w3.org/1999/XSL/Transform">
Большое спасибо JW