<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);
$ 영역은 영역의 ID입니다 (지금은 보통 1 내가 테스트하고있어 것을)
내 목적은 새로운 동물을 만들고 적절한 동물에 추가하는 것입니다.
그러나 나는 istructio $의 area_element이 미확정 때문에 findnodes 항상 빈 노드 목록을 반환하기 때문에 N
my $area_element = $root -> findnodes("//area[\@id=$area]")->get_node(1);
이 작동하지 않습니다 (크기 (인쇄 확인)).
문제는 findnodes 내부의 xpath 표현이라고 생각하지만 잘못된 것이 무엇인지 이해할 수 없으며 다른 라이브러리 (XML :: XPath)와 동일한 표현식을 사용하며 작동합니다.
무엇이 잘못 되었나요?
코드를 사용해 보았지만 다음과 같이 나타납니다. ---------- 소프트웨어 오류 : XPathContext : /Users/toyo/Sites/zoo/cgi-bin/_nuovo_animale.cgi 줄의 현재 노드가 손실되었습니다. 76 --------- line 76은 다음과 같습니다. my $ area_element = $ xpc -> findnodes ("// zoo : area [\ @ id = $ area]") -> get_node (1); – qwertoyo
@qwertoyo, 이것은 새로운 문제이며 여기에서 논의 할 공간이 없습니다. 새로운 질문을하고 문제를 설명하는 데 필요한 최소 실행 코드를 제공하십시오. – ikegami
@qwertoyo, 간단한 시도 :'my ($ area_element) = $ xpc-> findnodes ("// 동물원 : 지역 [\ @ 아이디 = $ 지역]", $ 의사), ' – ikegami