Der xpath-Ausdruck in findnodes () gibt eine leere Knotenliste zurück
XML:
<zoo xmlns="http://www.zoo.com" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://www.zoo.com employee.xsd">
<area id="1" posizione="nord" nome="scimmie">
<animale>
<nome>Gigi</nome>
<sesso>Male</sesso>
<eta>3</eta>
</animale>
<animale>
<nome>Gigia</nome>
<sesso>Female</sesso>
<eta>2</eta>
</animale>
</area>
<area id="2" posizione="nord" nome="giraffe">
<animale>
<nome>Giro</nome>
<sesso>Male</sesso>
<eta>6</eta>
</animale>
<animale>
<nome>Gira</nome>
<sesso>Female</sesso>
<eta>5</eta>
</animale>
</area>
</zoo>
Code:
my $parser = XML::LibXML->new;
my $doc = $parser->parse_file("../xml/animals.xml");
my $root = $doc->getDocumentElement();
my $new_animal = $doc->createElement("animale");
my $name_element = $doc->createElement("nome");
$name_element->appendTextNode($name);
my $gender_element = $doc->createElement("sesso");
$gender_element->appendTextNode($gender);
my $age_element = $doc->createElement("eta");
$age_element->appendTextNode($age);
$new_animal->appendChild($name_element);
$new_animal->appendChild($gender_element);
$new_animal->appendChild($age_element);
my $area_element = $root -> findnodes("//area[\@id=$area]")->get_node(1);
$area_element->appendChild($new_animal);
$ area ist die ID eines Bereichs (normalerweise 1, wenn ich gerade teste)
Mein Ziel ist es, ein neues Tier zu erschaffen und es dem richtigen Gebiet hinzuzufügen
aber ich habe das problem das die bau ist
my $area_element = $root -> findnodes("//area[\@id=$area]")->get_node(1);
funktioniert nicht, da $ area_element undef ist, da findnodes immer eine leere Knotenliste zurückgibt (überprüft, ob size () gedruckt wird).
Ich denke, dass das Problem der xpath-Ausdruck in findnodes ist, aber ich kann nicht verstehen, was falsch ist. Ich verwende denselben Ausdruck mit einer anderen Bibliothek (XML :: XPath) und er funktioniert.
Was ist falsch?