중화사전망 - 자전 검색 - C 언어로 XML 파일을 구문 분석하는 방법

C 언어로 XML 파일을 구문 분석하는 방법

나는 지난번에 누군가에게 편지를 썼다.

Xml 파일 내용

& lt? Xml 버전 = "1.0" 인코딩 = "utf-8"? & gt

-< Aicomoa _ response & gt

-< 국가 목록>

-< 국가>

& ltid & gt7 & lt/id & gt;;

& ltpid & gt0 & lt/PID & gt;;

& ltcontinental _ id>;; 1< /continental _ id >

& lt 국호 & gt93 & lt/ 국호>

& ltcnttitle & gt;; 아프가니스탄

& lt 는> 아프가니스탄 & lt/entitle >

아 프가 니스 탄 & lthztitle & gt

& ltjptitle & gt 는 < /jptitle >

& ltkotitle & gt& lt/kotitle & gt;;

& ltjp _ pinyin & gt 영구 < /jp _ pinyin >

& lt 병음> 아포한</ 병음>

& ltsid & gt0 & lt/sid & gt;;

& ltjibie & gt1< /jibie >

& lt/country & gt;;

-< 국가>

& ltid & gt8 & lt/id & gt;;

& ltpid & gt0 & lt/PID & gt;;

& ltcontinental _ id>;; 2 & lt/continental _ id>;;

& lt 국호 & gt355 & lt/ 국호>

& ltcnttitle & gt;; 알바니아

& lt> 알바니아 & lt/entitle >

& lthztitle & gt 알바니아

& ltjptitle & gt ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ /jptitle >

& ltkotitle/& gt;;

& ltjp _ pinyin & gt 영구 < /jp _ pinyin >

Lt 병음> 알바니예 & lt/ 병음>

& ltsid & gt0 & lt/sid & gt;;

& ltjibie & gt1< /jibie >

& lt/country & gt;;

& lt/country _ list & gt;;

& lt/aicomoa _ response >

실행 결과

Info [0] = [id: 7 | PID: 0 | continental _ id:1| 국호: 93 | cn 제목: 아프가니스탄 | 제목:

Hztitle: 아프가니스탄 | jptitle: ㅋㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ 1261

Sid:0|jibie: 1|]

Info [1] = [id: 7 | PID: 0 | continental _ id:1| 국호: 93 | cn 제목

Hztitle: 아프가니스탄 | jptitle: ㅋㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ 1261

Sid:0|jibie: 1|]

계속하려면 아무 키나 누르십시오

암호

# include & ltstdio.h & gt

# include & ltstring.h & gt

주 ()

{

Int I = 0;;

FILE * FP

Char SZ file buff [1024] = {0}, szbuff [100] [1024];

Char id [10] = {0}, PID [10] = {0}, continental _ id [/kll

Cnttitle [64] = {0}, entitle [64] = {0}, hztitle [64] = {0}, jptitle [64] = {

Kotitle [64] = {0}, jp _ pinyin [64] = {0}, pinyin [64] = {0}, sid [/kloc-)

Char *lFirst, * lEnd

Fp = fopen ("country.txt", "r");

If(FP = = NULL)

{

Printf ("XML 파일 읽기 오류! \ n ");

}

While(fgets(szFileBuff, 1023, FP))

{

If((lFirst = strstr(szFileBuff, "& ltid & gt"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/id & gt;;") );

Memcpy(id, lFirst+4, lend-l first-4);

}

If((lFirst = strstr(szFileBuff, "& ltpid"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/PID & gt;;") );

Memcpy(PID, lFirst+5, lend-l first-5);

}

If((lFirst = strstr(szFileBuff, "& ltcontinental _ id>;;") ))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/continental _ id>;;") );

Memcpy(continental _ id, lFirst+14, lend-l first-14);

}

If((lFirst = strstr(szFileBuff, "< 국호"))! = NULL)

{

LEnd = str str(lFirst+ 1, "</ 국호");

Memcpy (국호, lFirst+8, lend-l first-8);

}

If((lFirst = strstr(szFileBuff, "& ltcntitle"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/cnttitle & gt;;") );

Memcpy(cntitle, lFirst+9, lend-l first-9);

}

If((lFirst = strstr(szFileBuff, "< 제목"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/entitle & gt;;") );

Memcpy(entitle, lFirst+9, lend-l first-9);

}

If((lFirst = strstr(szFileBuff, "& lthztitle"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/Hz title & gt;;") );

Memcpy (Hz 제목, lFirst+9, lend-l first-9);

}

If((lFirst = strstr(szFileBuff, "& ltjptitle"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/jptitle>);

Memcpy(jp title, lFirst+9, lend-l first-9);

}

If((lFirst = strstr(szFileBuff, "& ltkotitle"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/kotitle>);

Memcpy (코제목, lFirst+9, lend-l first-9);

}

If((lFirst = strstr(szFileBuff, "& ltjp _ 병음"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/jp_pinyin>);

Memcpy(jp _ pinyin, lFirst+1 1, lend-l first-1/kloc/

}

If((lFirst = strstr(szFileBuff, "< 병음"))! = NULL)

{

LEnd = str str(lFirst+ 1, "</ 병음");

Memcpy (병음, lFirst+8, lend-l first-8);

}

If((lFirst = strstr(szFileBuff, "< sid" gt; ") ))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/sid & gt;; );

Memcpy(sid, lFirst+5, lend-l first-5);

}

If((lFirst = strstr(szFileBuff, "& ltjibie"))! = NULL)

{

LEnd = str str(lFirst+ 1, "& lt/jibie & gt;;") );

Memcpy(jibie, lFirst+7, lend-l first-7);

}

If((lFirst = strstr(szFileBuff, "& lt/country"))! = NULL)

{

스프린트 (szbuff [I], "id:% s | PID:% s | continental _ id:% s | 국호:% s | cnttitle"

Id, PID, continent _ id, 국호, cntitle, entitle, hztitle, jptitle, kotitle, jp_pinyin, 병음

Printf ("info [%d] = [%s] \ n", i++, szbuff);

}

}

Fclose (FP);

}

보충: 당신은 너무 일반적입니다.

1 업로드하는 XML 파일의 구체적인 형식은 무엇입니까?

웹 페이지에 표시되는 구체적인 형식은 무엇입니까?

너는 어떻게 해야 할지 전혀 모르기 때문에, 너는 어떻게 물어야 할지 모른다.

C 언어의 CGI 에 신경 쓸 필요가 없습니다. 그렇죠? 나는 그것이 무엇으로 업로드되었는지는 개의치 않는다.

당신이 언급한 단어 embedded 만 유용한 정보를 주었습니다. 즉, 플러그인으로 이 XML 을 구문 분석할 수 없을 것 같습니다.

C 언어밖에 없어요

이제 XML 파일 형식과 XML 에서 구문 분석된 정보가 웹 페이지에 표시되어야 하는지 물어 보겠습니다.

이 점을 알기만 하면 생성된 html 파일을 내 프로그램에 추가하기만 하면 됩니다.