我正在尝试解析 Articulate eLearning 课程 (imsmanifest.xml) 的 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::Simple 和 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 的正确方法吗?
非常感谢你。