2010-12-17 2 views
1

다음은 내 코드 & xml 파일입니다. XML 파일을 읽고 내용을 저장하려고합니다. 그러나 그것은 작동하지 않습니다.C++ XML 파서 QT - 작동하지 않음

int ParseConfigFile::populateUserValues (string &OS, string &dir, string &logPath) 
{ 
    QDomDocument doc; 
    QDomElement element; 

    QFile file("config_v1.xml"); 

    if (doc.setContent(file.readAll()) == false) 
     return 1; 

    element = doc.documentElement(); 

    QDomNodeList list = element.childNodes(); 
    QDomElement firstChild = list.at(0).toElement(); // will return the first child 
    QDomElement secondChild = list.at(1).toElement(); 
    QDomElement thirdChild = list.at(2).toElement(); 


    QString s1,s2,s3; 
    s1 = firstChild.text(); 
    s2 = secondChild.text(); 
    s3 = thirdChild.text(); 

    OS = s1.toStdString(); 
    dir = s2.toStdString(); 
    logPath = s3.toStdString(); 

    return 0; 
} 

내 XML이

<?xml version="1.0"?> 
<config> 
    <type>LINUX</type> 
    <dir>/home/</dir> 
    <path>/var/log/</path> 
</config> 
+1

당신의 오류가 무엇입니까? 게다가, 이것은 XML을 파싱하는 좋은 방법이 아닙니다. XML에서 순서를 변경하면 코드에서 잘못된 값을 찾습니다. – ZeissS

+0

나는 어떤 출력 즉 NULL도 얻지 못하고 있습니다. 파서를 분석하는 가장 좋은 방법은 제게 제안 해주십시오. XML에 초보자입니다. – Allwyn

답변

1

당신이 다음 코드가 작동처럼 QDomDocument를 인스턴스화해야 도와주세요 :

if (doc.setContent(&file) == false) 
     return 1; 
QDomDocument이 Qfile을 같이 (AN IO 장치로 작업 할 수 있습니다

) QDomDocument의 내용을 파일에서 설정하는 최적의 방법입니다. 당신이 구성 파일 리더/라이터를 작성하려고하는 경우

어쨌든, 난 당신이 QSettings

QSettings settings("MyCompany", "MyApp"); 
QString s1,s2,s3; 
s1 = settings.value("type").toString(); 
s2 = secondChild..value("dir").toString(); 
s3 = thirdChild..value("path").toString(); 

구성 파일 형식은 XML되지 않습니다 고수 제안 (그것은 키 = 값이됩니다)하지만, 파일 자체에 대해 걱정할 필요가 거의 없습니다. 파일에 어떤 값을 설정하는 것은 또한 쉽다 :

QSettings settings("MyCompany", "MyApp"); 
settings.setValue("path", "/var/log/"); 

구성 파일은 다음과 같습니다

[General] 
path=/var/log/ 

참조 : QSettings documentation

+0

QSetting이란 무엇을 의미합니까? – Allwyn

+0

@Winbros - QSettings는 구성 파일에서 읽고 쓸 수 있도록 도와주는 클래스입니다. 매우 사용하기 쉽고 프로그램이 실행중인 플랫폼의 적절한 사용자 폴더 (예 : Windows의 경우 Users/me/Application Data/myApp 및 Linux의 경우 home/me/.config/myApp)에 구성 파일을 저장합니다. http : //doc.troll.no/4.7/qsettings.html – Raphael

+0

QSettings로 어떻게 수행 될지 알 수 있습니까? 대답 – Raphael