2014-04-18 117 views
-1

我有簡單findnodes,我只是想從libxml的屬性元素值匹配

< measValue measObjLdn='XYZ' > 

從我的XML

findnodes(/measValue[@measObjLdn='XYZ')]) 

我得到錯誤的Global symbol "@measObjLdn" requires explicit package name

,當匹配屬性measValue我花了@然後我得到錯誤XPath error : Invalid predicate

findnodes(/measValue[\@measObjLdn='XYZ')]) 

此外,當我做measValue和measObjLdn作爲變量,那麼它更糟糕

my $mv=measValue; 

my $mn=measObjLdn; 

findnodes(/$mv["\@". "$mn"='XYZ')]) 

這個任何解決方案,將不勝感激。

+0

你應該多加註意[文件](https://metacpan.org/pod/distribution/XML-LibXML/lib/XML/LibXML /XPathContext.pod)。您會看到XPath表達式的所有示例都是帶引號的字符串。 –

回答

3

你的XPath應該是一個字符串:

$xml->findnodes("/measValue[\@measObjLdn='XYZ')]") 
+0

如果你把它放在一個單引號的strring中,你甚至不需要逃避'@':-) –

+0

確實,但這隻會使「當我將measValue和measObjLdn作爲變量」部分變得複雜。 – tobyink

相關問題