私は、いくつかの子ノードのテキスト値が与えられたときに、XMLの特定のノードを削除するサブルーチンをPerlに書き込もうとしています。XML :: Twigで使用するXPath述語の修正
のようなXMLを考える:
<Path>
<To>
<My>
<Node>
<ChildA>ValA</ChildA>
<ChildB>ValB</ChildB>
<ChildC>ValC</ChildC>
</Node>
</My>
</To>
</Path>
<!-- A lot of siblings follow... -->
私が使用しているXPath式が本質的である:私は私のスクリプトを実行しようとしているときに
/Path/To/My/Node[ChildA="ValA" and ChildB="ValB" and ChildC="ValC"]
、私のようなエラーを取得しています:
Error in XPath expression
/Path/To/My/Node[ChildA="ValA" and ChildB="ValB" and ChildC="ValC"] at
ChildA="ValA" and ChildB="ValB" and ChildC="ValC" at Twig.pm line 3353
私はこれに迷っていますし、提案を探しています。私は周りのグーグルで試してみましたが、私はXML::Twig
のような述語を使用しようとしている実例を見つけることができません。問題が私のXPath構文にあるのか、どうして私がXML::Twig
を使っているのか分かりません。良い測定のために
/Path/To/My/Node[ChildA/text()="ValA" and ChildB/text()="ValB" and ChildC/text()="ValC"]
ものではありません運のいずれか。解決策は何ですか?あなたが言っているように、テストの中で
あなたは 'findnodes'または' twig_handlers'ためのトリガとしてでこの表現を使用していますか? Seanが述べた 'findnodes'は、XML :: Twig :: XPathを使うならば、すべてのXPathを使うことができます。ハンドラをトリガするための述語はより限定されているので、子の値をテストする 'Node'のハンドラが必要です。 – mirod