用vc如何将xml文件中的数据导入mysql数据库中

解决方案 »

  1.   

    用MSXML来解析XML,这里要用到如下接口MSXML.DLL所包括的主要COM接口有:
      1. IXMLDOMDocument(Document接口)
    DOMDocument 对象是XML DOM的基础,你可以利用它所暴露的属性和方法来浏览、查询和修改XML文档的内容和结构。DOMDocument表示了树的顶层节点,它 实现了DOM文档的所有的基本方法,并且提供了额外的成员函数来支持XSL和XSLT。它创建了一个文档对象,所有其他的对象都可以从这个文档对象中得到 和创建。
      2. IXMLDOMNode(Node接口)
      IXMLDOMNode是文档对象模型(DOM)中的基本对象,元素、属性、注释、过程指令和其他的文档组件都可以认为是IXMLDOMNode。事实上,DOMDocument对象本身也是一个IXMLDOMNode对象。
      3. IXMLDOMNodeList
      IXMLDOMNodeList实际上是一个节点(Node)对象的集合,节点的增加、删除和变化都可以在集合中立刻反映出来,可以通过"for.循环 "结构来遍历所有的节点。读出某一个结构下的各个节点属性,然后拼接成SQL语句,最后Insert进MySQL里面去。
      

  2.   

    编程举例
    1、目标文档:  <book id="bk101">
           <author>lizlex</author>
           <title>XML Developer's Guide</title>
        </book>2、步骤:(1)在StdAfx.h中引入动态链接库 MSXML.DLL(C:\windows\system32\msxml4.dll)
    #import <msxml4.dll>(2)界面设计:
    分别放入三个Text,用于输入数据,与显示文档内容用,并添加关联的成员变量m_strId,m_strAuthor, m_strTitle;并添加确定按钮:(3)产生文档的程序片断
    void CXmlparseDlg::OnButtonGenerate() 
    {
    UpdateData();MSXML2::IXMLDOMDocumentPtr pDoc; 
    MSXML2::IXMLDOMElementPtr   xmlRoot ;     //创建DOMDocument对象 
    HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); 
    if(!SUCCEEDED(hr)) 
    {  
       MessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!"); 
       return ;
    } //根节点的名称为Book
    //创建元素并添加到文档中
    xmlRoot=pDoc->createElement((_bstr_t)"Book");//设置属性
    xmlRoot->setAttribute("id",(const char *)m_strId);
    pDoc->appendChild(xmlRoot);
    MSXML2::IXMLDOMElementPtr pNode;//添加“author”元素
    pNode=pDoc->createElement((_bstr_t)"Author");
    pNode->Puttext((_bstr_t)(const char *)m_strAuthor);
    xmlRoot->appendChild(pNode);//添加“Title”元素
    pNode=pDoc->createElement("Title");
    pNode->Puttext((const char *)m_strTitle);
    xmlRoot->appendChild(pNode);//保存到文件 
    //如果不存在就建立,存在就覆盖 
    pDoc->save("d:\\he.xml");}(4)读取XML文档的程序片断
    void CXmlparseDlg::OnButtonLoad() 
    {
    MSXML2::IXMLDOMDocumentPtr pDoc;
    HRESULT hr;
    hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
    if(FAILED(hr))
    {  
       MessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!"); 
       return ;
    } //加载文件 
    pDoc->load("d:\\he.xml"); MSXML2::IXMLDOMNodePtr   pNode;//在树中查找名为Book的节点,"//"表示在任意一层查找 
    pNode=pDoc->selectSingleNode("//Book");MSXML2::DOMNodeType nodeType; //得到节点类型 
         pNode->get_nodeType(&nodeType); //节点名称 
    CString strName;strName=(char *)pNode->GetnodeName();//节点属性,放在链表中 
    MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap=NULL;
    MSXML2::IXMLDOMNodePtr    pAttrItem;
    _variant_t variantvalue;
    pNode->get_attributes(&pAttrMap);long count;
    count=pAttrMap->get_length(&count);pAttrMap->get_item(0,&pAttrItem);
    //取得节点的值
    pAttrItem->get_nodeTypedvalue(&variantvalue);
    m_strId=(char *)(_bstr_t)variantvalue;UpdateData(FALSE);}
      

  3.   

    VC操作MySQL参见http://blog.csdn.net/liunx_cj/archive/2008/07/09/2630622.aspx