CString CXmlDemoDlg::NodeToXML(MSXML::IXMLDOMNodePtr pNode, int& nImageToAdd, int& nSelectedImageToAdd, int flag)
{
USES_CONVERSION; MSXML::DOMNodeType nodeType;
pNode->get_nodeType(&nodeType); CString strTextToAdd; nImageToAdd = (int)nodeType;
nSelectedImageToAdd = (int)nodeType + 13; try
{
switch(nodeType)
{
case MSXML::NODE_INVALID:
strTextToAdd = _T("---");
break; case MSXML::NODE_ELEMENT:
strTextToAdd = W2T(pNode->GetnodeName());
break; case MSXML::NODE_ATTRIBUTE:

strTextToAdd.Format(_T("%s = %s"), W2T(pNode->GetnodeName()), W2T(_bstr_t(pNode->GetnodeValue())));
pNode->text = "dfkgpoer"; if(strTextToAdd.Find("m_str")!= -1 && flag == 0) 
{ m_EditListCtrl.InsertItem(WholeNum,  W2T(pNode->GetnodeName()));
m_EditListCtrl.SetItemText(WholeNum, 1, W2T(_bstr_t(pNode->GetnodeValue())));
//m_EditListCtrl.SetItemText(WholeNum, 2, "SubItem2");
WholeNum  += 1;
}
if(strTextToAdd.Find("m_str")!= -1 && flag == 1) 
{
//m_EditListCtrl.InsertItem(WholeNum,  W2T(pNode->GetnodeName()));
m_EditListCtrl.SetItemText(WholeNum, 2, W2T(_bstr_t(pNode->GetnodeValue())));
//m_EditListCtrl.SetItemText(WholeNum, 2, "SubItem2");
WholeNum  += 1;
} break; case MSXML::NODE_TEXT:
strTextToAdd = W2T(_bstr_t(pNode->GetnodeValue()));
break; case MSXML::NODE_CDATA_SECTION:
strTextToAdd = W2T(_bstr_t(pNode->GetnodeValue()));
break; case MSXML::NODE_ENTITY_REFERENCE:
strTextToAdd = W2T(pNode->GetnodeName());
break; case MSXML::NODE_ENTITY:
strTextToAdd = W2T(pNode->GetnodeName());
break; case MSXML::NODE_PROCESSING_INSTRUCTION:
strTextToAdd.Format(_T("%s %s"), W2T(pNode->GetnodeName()), W2T(_bstr_t(pNode->GetnodeValue())));
if(strTextToAdd.Find("m_str")!= -1) WholeNum  += 1;
break; case MSXML::NODE_COMMENT:
strTextToAdd = W2T(_bstr_t(pNode->GetnodeValue()));
break; case MSXML::NODE_DOCUMENT:
strTextToAdd = _T("Root Document Node");
break;

case MSXML::NODE_DOCUMENT_TYPE:
strTextToAdd = W2T(_bstr_t(pNode->GetnodeName()));
break; case MSXML::NODE_DOCUMENT_FRAGMENT:
strTextToAdd = _T("Root Node of Document Fragment");
break; case MSXML::NODE_NOTATION:
strTextToAdd = W2T(_bstr_t(pNode->GetnodeName()));
break;

default:
ASSERT(_T("Invalid NODE TYPE!\n"));
}
}
catch(...)
{
strTextToAdd = _T("<ERROR!!>");
} return strTextToAdd;
}
void CXmlDemoDlg::OnClickedSave()
{
// TODO: Add your control notification handler code here
ListRegion ListContent;//read list control content
CString AttrName,AttrValue; int nCount = m_EditListCtrl.GetItemCount();
for(int index = 0; index <= nCount;index++)
{
AttrName = m_EditListCtrl.GetItemText(index,0);
AttrValue = m_EditListCtrl.GetItemText(index,2);
} CComboBox* combo_Content = (CComboBox*)GetDlgItem(IDC_Content);// 获取当前选中的项目ID。
int nIndex = combo_Content->GetCurSel();
CString strItem;
combo_Content->GetLBText( nIndex, strItem); // 就是得到选中的字符串了。
strItem = "new" + strItem;
//CString PathNameCopy = PathName;
CString SavePath;
SavePath = Path;
//int   nPos;   
//nPos = PathName.ReverseFind('\\');   
//PathName = PathName.Right(PathName.GetLength() - nPos -1);   //获取文件名
    //SavePath += PathName;
MSXML::IXMLDOMDocumentPtr pDOMDoc_Org(__uuidof(MSXML::DOMDocument));
SavePath += strItem;
bool varResult = pDOMDoc_Org->load(_variant_t(SavePath));  //重新载入源文件
        m_pDOMDoc = pDOMDoc_Org;
OnRefresh(1);
OnSaveXMLToFile(SavePath);
}

解决方案 »

  1.   

    case MSXML::NODE_ATTRIBUTE:

    strTextToAdd.Format(_T("%s = %s"), W2T(pNode->GetnodeName()), W2T(_bstr_t(pNode->GetnodeValue())));
    pNode->text = "dfkgpoer";
    gjri = "abc";
    pNode->Puttext(gjri);

    if(strTextToAdd.Find("m_str")!= -1 && flag == 0) 
    { m_EditListCtrl.InsertItem(WholeNum,  W2T(pNode->GetnodeName()));
    m_EditListCtrl.SetItemText(WholeNum, 1, W2T(_bstr_t(pNode->GetnodeValue())));
    //m_EditListCtrl.SetItemText(WholeNum, 2, "SubItem2");
    WholeNum  += 1;
    }
    if(strTextToAdd.Find("m_str")!= -1 && flag == 1) 
    {
    //m_EditListCtrl.InsertItem(WholeNum,  W2T(pNode->GetnodeName()));
    m_EditListCtrl.SetItemText(WholeNum, 2, W2T(_bstr_t(pNode->GetnodeValue())));
    //m_EditListCtrl.SetItemText(WholeNum, 2, "SubItem2");
    WholeNum  += 1;
    }
    combo_Content = (CComboBox*)GetDlgItem(IDC_Content);// 获取当前选中的项目ID。
    nIndex = combo_Content->GetCurSel(); combo_Content->GetLBText( nIndex, strItem); // 就是得到选中的字符串了。
    strItem = "new" + strItem;
    SavePath = Path;
    SavePath += strItem;
    OnSaveXMLToFile(SavePath); break;