Нашел такую либу. Она с начала вообще не хотела компилиться, но после нескольких штрихов все скомпилировалось, но работать я ее так и не смог заставить. В общем компилирую в VS2008 с ключем UNICODE CHARACTER SET те все операции там с wchar_t. Вот попробовал сделать для начала просто
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <ostream>
#include <pugxml.h>
using namespace std;
using namespace pug;
int _tmain(int argc, _TCHAR* argv[])
{
//ostream f("myxml.xml",ios_base::out);
xml_parser* xml = new xml_parser;
xml_node root = xml->document();
xml_node node = root.append_child(pug::node_element);
node.name(_T("node"));
node.value(_T("my name is root"));
wcout<<node.value()<<endl;
//node.outer_xml(f);
xml_node d = root.first_element_by_name(_T("node"));
wcout<<d.value();//root.first_element_by_attribute(_T("node"));
system("pause");
return 0;
}