什么';我的Perl';中的findnodes语句有什么问题;谁的剧本?

什么';我的Perl';中的findnodes语句有什么问题;谁的剧本?,perl,xpath,libxml2,Perl,Xpath,Libxml2,我有一个简单的xml文件,如下所示: <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <microplateDoc xmlns="http://moleculardevices.com/microplateML"> <camelids> <species name="Camelus bactrianus"> <common-name>Bactrian Came

我有一个简单的xml文件,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<microplateDoc xmlns="http://moleculardevices.com/microplateML">
<camelids>
  <species name="Camelus bactrianus">
    <common-name>Bactrian Camel</common-name>
    <physical-characteristics>
      <mass>450 to 500 kg.</mass>
      <appearance>
  Blah blah blah
   </appearance>
    </physical-characteristics>   
  </species>
  </camelids>
 </microplateDoc>   

但是我找不到任何节点。你能帮忙告诉我为什么它不工作吗?查找perl函数的最佳网站是什么,这样我就可以自己尝试解决这个问题?我怎样才能让脚本告诉我它在做什么,因为此时的输出什么都没有。非常感谢。

您已将名称空间前缀与文档关联,但您的语法没有使用它

my @n = $xc->findnodes('//ns:species');
我应该做这项工作

如果没有前缀,您将无法匹配。另外,
*/species
路径将只匹配当前上下文(即文档的顶层)中的子级。使用
//species
将在文档中找到所有
species
元素。如果这对您不起作用(因为元素出现在您不希望匹配的文档中的其他上下文中),请使用

因为元素是顶级的“曾孙”

还有一个参考资料

my @n = $xc->findnodes('//ns:species');
/*/*/ns:species