XML 문서의 정보를 인쇄 할 때 각 줄 앞에 get이 표시됩니다. 내 XML 문서는 다음과 같습니다. 여기 화면이나 파일로 인쇄 할 때 Expat가 쓰레기를 출력합니다.
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
이 그것을 밖으로 인쇄 무엇
#include <cstdio>
#include <expat.h>
#include <string>
#include <fstream>
#include <cstring>
using namespace std;
void XMLCALL start(void*,const char*, const char**);
void XMLCALL end(void*,const char*);
void XMLCALL character(void*, const char*, int);
int main()
{
int size;
fstream fin("note.xml", ios::in | ios::binary | ios::ate);
size = fin.tellg();
char* data = new char [size + 1];
fin.seekg(0, ios::beg);
XML_Parser parser = XML_ParserCreate("ISO-8859-1");
XML_SetElementHandler(parser, start, end);
XML_SetCharacterDataHandler(parser, character);
fin.read(data, size);
XML_Parse(parser, data, size , fin.eof());
XML_ParserFree(parser);
fin.close();
delete [] data;
}
void XMLCALL start(void* data, const char* name, const char** atts)
{
if((strcmp(name, "note")) == 0)
{
printf("-- Note --<br> ");
}
else if((strcmp(name,"to")) == 0)
{
printf("To: ");
}
else if((strcmp(name,"from")) == 0)
{
printf("From: ");
}
else if((strcmp(name,"heading")) == 0)
{
printf("Heading: ");
}
else if((strcmp(name, "body")) == 0)
{
printf("Message: ");
}
}
void XMLCALL end(void* data,const char* name)
{
printf("<br>");
}
void XMLCALL character(void* data, const char* info, int length)
{
printf("%s",info);
}
내 코드입니다 :
-- Note --<br>
To: Tove<br>
From: Jani<br>
Heading: Reminder<br>
Message: Don't forget me this weekend!<br>
<br>
하나를 :
-- Note --<br>
�To: Tove<br>
xFrom: Jani<br>
xHeading: Reminder<br>
xMessage: Don't forget me this weekend!<br>
x<br>
이 내가 그것을 밖으로 인쇄 할 것입니다 도움을 크게 주시면 감사하겠습니다. 고마워요
개행? 나는. ' "\ r \ n"'? –
유니 코드 BOM 헤더가 가능합니다. 그런데 strncmp를 사용하여 문자열을 더 잘 사용해야합니다. 이 명령으로 많은 중요한 오류가 발생합니다. – rekire
@rekire : 잠깐, 뭐라구? 그건 나에게 의미가 없다. 그것은 "mmap을 사용하지 마십시오. 위험하고 악합니다!" – thejh