我試圖解析Articulate eLearning課程(imsmanifest.xml)的XML清單文件。使用Perl解析XML文件時遇到困難
XML結構的摘錄提供如下(我想鑽到adlcp:masteryscore):
<?xml version="1.0" encoding="UTF-8"?>
<manifest xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2" xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" version="1.0" identifier="Electrical_Design_Part_3">
<metadata/>
<organizations default="Electrical_Design_Part_3_ORG">
<organization identifier="Electrical_Design_Part_3_ORG">
<title>Electrical Design - Part 3</title>
<item identifier="Electrical_Design_Part_3_SCO" identifierref="Articulate_Presenter_RES" isvisible="true">
<title>Electrical Design - Part 3</title>
<adlcp:masteryscore>65</adlcp:masteryscore>
</item>
</organization>
</organizations>
<resources/>
</manifest>
我已經使用XML ::簡單和XML試圖::的libxml。我可以通過簡單的XML文件使這些模塊正常工作,但不需要實際需要解析的清單文件。
下面的代碼顯示了我嘗試使用XML ::的libxml向下鑽取到標題標籤:
use XML::LibXML;
$filename = "imsmanifest.xml";
$parser = XML::LibXML->new();
$xmldoc = $parser->parse_file($filename);
for my $sample ($xmldoc->findnodes('/manifest/organizations/organization/item/title')) {
for my $property ($sample->findnodes('./*')) {
print $property->nodeName(), ": ", $property->textContent(), "\n";
}
print "\n";
};
一個人怎麼處理的adlcp結腸:masteryscore標籤?每當我嘗試使用這個,我都會遇到一個錯誤 - 但也許我做得不對。
是否有人請告訴我正確的方法來深入adlcp:masteryscore?
非常感謝。
順便說一句,總是使用'use strict;使用警告;'!這裏不會有什麼真正的區別,但是你用沒有它的剪刀跑步。 – ikegami
修正格式錯誤的XML – ikegami