프로그래밍과 잡담

QDomDocument 사용법.. 본문

프로그래밍/Qt[미사용]

QDomDocument 사용법..

크레온 2010. 8. 16. 23:37
도큐먼트 는 여기고..http://doc.trolltech.com/4.6/qdomdocument.html




사용법은 밑에 코드를 보면 알 수 있다..
#include <QDomDocument>

QDomDocument *doc = new QDomDocument();  // 객체 동적 할당.
QFile file;
file.setFileName("rss2.xml");       // QFile을 이용해서 안에 내용물을 가져온다.
if (file.open(QFile::ReadOnly))    
{
	if (!document->setContent(&file))
	{
	        file.close();
        }
}
file.close();

/*  rss용 xml을 파싱을 하는것이다.*/
QDomElement docElem = document->documentElement();   //QDomElement 형식으로 변환 시킨다.
/*cout이 표준  라이브러리 이기때문에  toStdString()을 사용한다. 아니면 qDebug()를 이용한다.
나는 이클립스에서 했기 때문에 cout을 사용했다. 이클립스는 qDebug()가 이상하게 안나온다. 
*/
cout << docElem.tagName().toStdString() << endl;             //테그 이름이 뭔지 찍어본다.

QDomElement channel = docElem.firstChildElement("channel");
cout << channel.tagName().toStdString() << endl;    //어차피 channel이란 이름이지만 확인 차 찍어본다

QDomElement title = channel.firstChildElement("title");
cout << title.text().toUtf8().constData() << endl;  //타이틀의 내용을 찍어본다.
//xml을 보면 item이라는 테그들이 있다.
// 그 테그들을 모조리 뽑아온다.
QDomNodeList items = channel.elementsByTagName("item");  
//items의 개수까지 돈다.
for (int i = 0; i < items.count(); i++)
{
	QDomNode n = items.at(i);
	QDomElement e = n.firstChildElement("title");
               
        //toUtf8()을 이용해서 글자가 깨지는것을 방지한다.
	const char* data = e.text().toUtf8().constData();
	cout << "title :" << data << endl;

	e = n.firstChildElement("link");
	data = e.text().toUtf8().constData();
	cout << "link :" << data << endl;

	e = n.firstChildElement("description");
	data = e.text().toUtf8().constData();
	cout << "description :" << data << endl;
}

//그리고 xml에서 보면 이런식 말고도 다르게 사용된다
//   이런식 말이다. 
//위에 경우는 
//이런식으로 사용하면 된다.
QString version = docElem.attribute("version");


대충 이런식으로 사용하면 된다. xml들은 대부분 이런식으로 뽑아내면 된다.

xml은 이런식으로 되어 있다.
다음 뉴스 rss를 이용했다.

반응형
Comments