xmlXPathEval을 사용하여 ovf 파일 (XML 형식)에서 일부 노드를 선택했지만 실패했습니다. 구문 분석일부 노드를 성공적으로 선택하기 위해 xmlXPathEval에 필요한 것은 무엇입니까?
XML은 다음과 같습니다 :
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by VMware ovftool 3.0.2 (build-931074), UTC time: 2013-07-15T06:41:49.67628Z-->
<Envelope vmw:buildId="build-931074" xmlns="http://schemas.dmtf.org/ovf/envelope/1">
//children elements
</Envelope>
, 선택 코드는 다음과 같습니다 :
xmlXPathContextPtr context;
xmlXPathObjectPtr obj;
xmlNodeSetPtr nodeset=NULL;
int32 count=0;
//valid doc input
assert(doc != NULL);
//valid xpath
assert(xpath != NULL);
assert(nodeset_po != NULL);
context = xmlXPathNewContext(doc);·
assert (NULL != context);
obj = xmlXPathEval((xmlChar *)xpath, context);
assert (NULL != obj);
if (xmlXPathNodeSetIsEmpty(obj->nodesetval)) {
//The select nodes is always empty, even when I use "/Envelope" to select the root element
;;
} else {
nodeset = obj->nodesetval;
count = nodeset->nodeNr;
;;
}
코드의 주석이 failuer을 자세히 설명합니다.
그리고 낯선 사람을 만들 때 다른 XML을 구문 분석 할 대상 파일로 사용하면 예상대로 모든 노드를 선택할 수 있습니다.
xmlXPathEval에 대한 요구 사항이 제대로 작동하는지 궁금합니다.
그런 혼란스러운 결과를 얻으 려하지 않습니까?
내가 다른 추측 모든 노드를 성공적으로 선택할 수있을 때 사용한 xml은 기본 네임 스페이스 ('xmlns = "..."')가 없습니까? – har07
예. 이것 확인. – FaceBro