2011-03-26 1 views
0

libxml을 사용할 때 구문 분석 된 XML 파일에서 데이터에 액세스하는 위치는 어디입니까? 여기 구문 분석 된 XML 데이터에 액세스

는 트리 구조가 내의 데이터를 가져 오는 데 사용되는 방법

exampleFunc(const char *filename) { 
xmlParserCtxtPtr ctxt; /* the parser context */ 
xmlDocPtr doc; /* the resulting document tree */ 

/* create a parser context */ 
ctxt = xmlNewParserCtxt(); 
if (ctxt == NULL) { 
    fprintf(stderr, "Failed to allocate parser context\n"); 
return; 
} 
/* parse the file, activating the DTD validation option */ 
doc = xmlCtxtReadFile(ctxt, filename, NULL, XML_PARSE_DTDVALID); 
/* check if parsing suceeded */ 
if (doc == NULL) { 
    fprintf(stderr, "Failed to parse %s\n", filename); 
} else { 
/* check if validation suceeded */ 
    if (ctxt->valid == 0) 
    fprintf(stderr, "Failed to validate %s\n", filename); 
/* free up the resulting document */ 
xmlFreeDoc(doc); 
} 
/* free up the parser context */ 
xmlFreeParserCtxt(ctxt); 
} 

xmlsoft에서 사용 예입니다?

답변

1

두 가지 방법으로 데이터를 얻을 수 있습니다. 위의 코드에서 이미 xml 파일을 구문 분석하여 변수 - doc (xmlDocPtr 유형)에 준비했습니다. xmlDocPtr 모듈에서 사용할 수있는 함수를 사용하여 xml을 반복하고 이동할 수 있으며 적절한 데이터를 얻을 수 있습니다. 또 다른 방법은 XPath를 사용하는 것입니다. 라이브러리는 XPath를 지원하므로이 라이브러리를 사용할 수 있습니다.

xpath1.c을 참조하십시오. 이것은 xpath를 사용하여 데이터를 얻습니다. XML을 알고 있다면 XPath를 사용하여 필요한 데이터를 쉽고 빠르게 얻을 수 있습니다.

+0

감사합니다. 그 코드를 모두 사용해야합니까, 아니면 그냥 많은 기능 중 하나를 사용할 수 있습니까? – jarryd

+0

@ Helium3 .. 나는 당신의 XML이나 필요한 데이터를 모른다. XPath를 사용해야합니다. –