XML  File?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
  <!-- ========== Data Source Configuration =============================== -->
  <data-sources>
    <!-- MySQL Data Source -->
    <data-source type="org.apache.commons.dbcp.BasicDataSource">
      <set-property property="password"  value=""/>
      <set-property property="name" value="root"/>
    </data-source>
 <data-sources>
<struts-config>要求:
  修改<set-property property="password"  value=""/>
      <set-property property="name" value="root"/>
  中value的属性。
给出点源码? 
问题:
  1. 多了这节点解析不了<!DOCTYPE .../>
  2. value 属性设置不了。
我的一些源码(可运行在没有<!DocType>的条件下:
CoInitialize(NULL); 
  try {  
    CComPtr<IXMLDOMDocument>spXMLDOM;
    /*CComPtr<*/IXMLDOMNode* XMLDOMNode_Cur;
   /* CComPtr<*/IXMLDOMNode* XMLDOMNode_Modify;
    /*CComPtr<*/IXMLDOMNode* XMLDOMNode_Item;  
   /* CComPtr<*/IXMLDOMNode* XMLDOMNode_ItemValue;
   /* CComPtr<*/IXMLDOMNamedNodeMap* attributeMap;    HRESULT hr = spXMLDOM.CoCreateInstance(__uuidof(DOMDocument));
    if ( FAILED(hr) ) { throw "Can't create XML Parser Object!"; return FALSE;  }
    if ( spXMLDOM.p == NULL ) { throw "Can't create XML Parser Object!"; return FALSE; }
    // 如果对象创建成功的话,就开始装载XML文档
    VARIANT_BOOL bSuccess = false;
    hr = spXMLDOM->load( CComVariant( str_XMLPath ),&bSuccess);
    if ( FAILED(hr) ) {  throw "Can't load XML file"; return FALSE;   }                                                 
    if ( !bSuccess )  {  throw "Can't load XML file";  return FALSE;   }    CComBSTR bstrSS( L"struts-config/data-sources/data-source");
    
    CComPtr<IXMLDOMNode> spXMLNode;
    hr = spXMLDOM->selectSingleNode( bstrSS, &spXMLNode );
    if ( FAILED(hr) ) { throw "Select node fail!"; return FALSE; }
   
    spXMLNode->get_firstChild( &XMLDOMNode_Cur );
    CComBSTR bstrItemName;
    CComBSTR bstrSecItemName;
    CString str_Password = "password";
    CString str_UserName = "username";
    CString str_URL = "url";
 
    do{
      XMLDOMNode_Modify = XMLDOMNode_Cur;
      XMLDOMNode_Modify->get_attributes( &attributeMap );
      attributeMap->get_item( 0, &XMLDOMNode_Item );
      attributeMap->get_item( 1, &XMLDOMNode_ItemValue);        XMLDOMNode_Item->get_nodeName( &bstrItemName );
      XMLDOMNode_ItemValue->get_nodeName( &bstrSecItemName );      CString str_ItemName( bstrItemName );
      CString str_SecItemName( bstrSecItemName );
       
      if( str_ItemName == "property" && str_SecItemName == "value" ) {
        VARIANT value;
        VARIANT SecNodeValue;
        CString str_SecNodeValue;
        XMLDOMNode_Item->get_nodeValue( &value );
         
        // property == "password"
        if( ComparBSTR( value, str_Password ) ) {
          XMLDOMNode_ItemValue->get_nodeValue( &SecNodeValue );
          str_SecNodeValue = VARIANTtoCString( SecNodeValue );
          XMLDOMNode_ItemValue->get_attributes( &attributeMap );     
          AfxMessageBox( str_SecNodeValue );
        }
    
        if( ComparBSTR( value, str_UserName ) )
              AfxMessageBox( "username" );        if( ComparBSTR( value, str_URL) )
          AfxMessageBox( "url" );
      }
    } while( ! XMLDOMNode_Modify->get_nextSibling( &XMLDOMNode_Cur ) );
  } // try
  catch(char* lpstrErr) {
    AfxMessageBox( lpstrErr );
  }
  catch(...) {
    AfxMessageBox( "Don't Understand Error!" );
  }  CoUninitialize(); 

解决方案 »

  1.   

    兄弟有没有
    msn我们交流一下,我的是[email protected]
      

  2.   

    hr = spXMLDOM->load( CComVariant( str_XMLPath ),&bSuccess);
    为什么我的这句编译不过去,提示load只能有一个参数?我看了它也就一个参数呀,你这个为什么两个可以?请指教
    coinitialize(null);
     ccomptr<ixmldomdocument> spxmldom;
     hresult hr=spxmldom.cocreateinstance(_uuidof(domdocument));
     if(!succeeded(hr))  
     {                  
      messagebox("无法创建domdocument对象,请检查是否安装了ms xml parser 运行库!"); 
      return ;  
     } 
     variant_bool bsuccess=false;
      
     //hr = spxmldom->load(ccomvariant(l"he.xml"),&bsuccess); 例子是这样的,但编译出错的
     hr = spxmldom->load(ccomvariant(l"c:\\he.xml"));而这个却又打不开,请问什么问题?
      

  3.   

    IXMLDOMDocument2::Load() only have one parameter,
    IXMLDOMDocument::Load(0 have 2 parameters