XML 데이터 처리 하는 방법 정리.
파일 읽기, http 정보 읽기, 노드 정보 출력, 노드 검색 정보 출력
1. XML 파일 읽어서 출력하기
MSXML2::IXMLDOMDocument2Ptr pDoc; // XML Document 선언
pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); // 인스턴스 생성
HRESULT hr = pDoc->load((_variant_t)".\\test.xml");
if(hr == 0) {
AfxMessageBox("로딩 에러");
return;
}
AfxMessageBox(pDoc->xml);
2. http을 통한 XML 파일 읽어서 출력하기
MSXML2::IXMLDOMDocument2Ptr pDoc; // XML Document 선언
pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); // 인스턴스 생성
DWORD startTick = GetTickCount();
pDoc->put_async(VARIANT_FALSE);
HRESULT hr = pDoc->load((_variant_t)"http://localhost/TestXml/test2.xml");
if(hr == 0) {
AfxMessageBox("로딩 에러");
return;
}
AfxMessageBox(pDoc->xml);
3. XML 데이터의 첫번째 해당 노드값 읽어서 출력하기
MSXML2::IXMLDOMDocument2Ptr pDoc; // XML Document 선언
pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); // 인스턴스 생성
HRESULT hr = pDoc->load((_variant_t)".\\test.xml");
if(hr == 0) {
AfxMessageBox("로딩 에러");
return;
}
MSXML2::IXMLDOMNodePtr pNode;
pNode = pDoc->selectSingleNode(L"//name");
CString outString;
outString.Format("[검색결과] 노드명:%s, 노드값:%s\r\n", (LPCTSTR)pNode->GetnodeName(), (LPCTSTR)pNode->Gettext());
AfxMessageBox(outString);
4. XML 데이터의 해당 노드값 모두 읽어서 출력하기
MSXML2::IXMLDOMDocument2Ptr pDoc; // XML Document 선언
pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument)); // 인스턴스 생성
HRESULT hr = pDoc->load((_variant_t)".\\test.xml");
if(hr == 0) {
AfxMessageBox("로딩 에러");
return;
}
MSXML2::IXMLDOMNodeListPtr pNodeList;
pNodeList = pDoc->selectNodes(L"//name");
CString outTotalString;
for(int i = 0; i < pNodeList->length; i++) {
CString outString;
outString.Format("[검색결과] 노드명:%s, 노드값:%s\r\n",
(LPCTSTR)pNodeList->Getitem(i)->GetnodeName(),
(LPCTSTR)pNodeList->Getitem(i)->Gettext());
outTotalString.Append(outString);
}
AfxMessageBox(outTotalString);
나머지 노드값 변경하는 방법,
속성값 읽어 오기 및 변경 방법 등을 정리 해야 함.
테스트 소스 :