एक्सएमएल:xpath एक्सप्रेशन() लौटने खाली nodelist
<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>
कोड:
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);
$ क्षेत्र एक ऐसा क्षेत्र की आईडी है (आमतौर पर 1 अब है कि मैं परीक्षण कर रहा हूँ)
मेरा उद्देश्य एक नया जानवर बनाना है और इसे उचित क्षेत्र में जोड़ने के लिए
लेकिन मुझे समस्या है कि istructio n
my $area_element = $root -> findnodes("//area[\@id=$area]")->get_node(1);
काम नहीं करेगा, क्योंकि $ area_element undef है, क्योंकि findnodes हमेशा एक खाली nodelist रिटर्न (आकार (मुद्रण जाँच))।
मुझे लगता है कि समस्या findnodes के अंदर xpath अभिव्यक्ति है, लेकिन मुझे समझ में नहीं आता कि क्या गलत है, मैं एक ही पुस्तकालय (एक्सएमएल :: XPath) के साथ एक ही अभिव्यक्ति का उपयोग करता हूं और यह काम कर रहा है।
क्या गलत है?
मैंने आपके कोड के साथ प्रयास किया, लेकिन मुझे यह मिलता है: ---------- सॉफ़्टवेयर त्रुटि: XPathContext: /Users/toyo/Sites/zoo/cgi-bin/_nuovo_animale.cgi लाइन पर वर्तमान नोड खो गया 76 --------- लाइन 76 है: मेरा $ area_element = $ xpc -> findnodes ("// zoo: area [\ @ id = $ area]") -> get_node (1); – qwertoyo
@qwertoyo, यह एक नई समस्या है, और यहां पर चर्चा करने के लिए वास्तव में कोई जगह नहीं है। कृपया एक नया प्रश्न पूछें, और समस्या का प्रदर्शन करने के लिए आवश्यक न्यूनतम रननेबल कोड प्रदान करें। – ikegami
@qwertoyo, सरल प्रयास करें: 'मेरा ($ area_element) = $ xpc-> findnodes ("// zoo: area [\ @ id = $ area]", $ doc); ' – ikegami