【发布时间】:2016-01-27 00:35:27
【问题描述】:
我有一些 XML 文件,我想使用其中的一些信息。我已经编写了一个代码来读取这些文件,然后查找一些条件。
问题是这些 XML 文件以
开头 <SquishReport version="2.1" xmlns="http://www.froglogic.com/XML2">
而 Perl 无法读取它们(至少在我的代码中!)。但是当我将这些行附加到XML 文件的第一行时
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"?>
效果很好。
我的 XML 文件 test.xml 中的一些行:
<SquishReport version="2.1" xmlns="http://www.froglogic.com/XML2">
<test name="TEST">
<prolog time="2015-10-01T03:45:22+02:00"/>
<test name="tst_start_app">
<prolog time="2015-02-01T03:45:23+02:00"/>
<message line="38" type="LOG" file="C:\squish\test\sources.py" time="2015-02-01T03:45:23+02:00">
<description>
<![CDATA[>> >> >> start: init (global) - testcase C:\squish\test\tst_start_app]]></description>
</message>
</test>
</test>
</SquishReport>
读取 XML 文件的 Perl 代码是:
use strict;
use warnings;
use feature 'say';
use XML::LibXML;
# Parse the XML
my $xml = XML::LibXML->load_xml(location => 'test.xml');
# Iterate the entries
for my $entry ($xml->findnodes('/SquishReport/test/test')) {
my $key = $entry->findvalue('@name');
say "$key";
}
【问题讨论】:
-
请不要关闭该问题的重复项。该问题的 XML 是非法的,使问题复杂化,并使该问题的解决方案与该问题无关。我想把这个问题作为一个干净的例子。
标签: xml perl xml-libxml