XMLファイルからいくつかの情報を使いたいと思っています。私はこれらのファイルを読み込んでいくつかの条件を探し出すコードを書いています。名前空間を使用する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"?>
の1行目にこれらの行を追加しています。私の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";
}
[なぜXがするのが重複する可能性ML :: LibXMLは、ネームスペースを使用するとき、このxpathクエリのノードを見つけません。](http:// stackoverflow。com/questions/4083550/why-does-xmllibxml-find-no-nodes-for-this-xpath-query-when-using-namespace) – nwellnhof
この質問の重複として閉じないでください。その質問のXMLは違法であり、問題を複雑にし、その質問に対する解決策をこの質問と無関係にします。この質問をきれいな例として利用したいと思います。 – ikegami