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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage