2017-12-20 1 views
0
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
    <bean id="Account_Update" class="com.salesforce.dataloader.process.ProcessRunner" singleton="false"> 
     <description>Account Update</description> 
     <property name="name" value="Account_Update"/> 
     <property name="configOverrideMap"> 
      <map> 
       <entry key="dataAccess.name" value="E:\FileShare\XYZ\Account_Update\Input\Account_Update.csv"/> 
       <entry key="dataAccess.readUTF8" value="true"/> 
       <entry key="dataAccess.type" value="csvRead"/> 
       <entry key="dataAccess.writeUTF8" value="true"/> 
       <entry key="process.enableExtractStatusOutput" value="true"/> 
       <entry key="process.enableLastRunOutput" value="false"/> 
       <entry key="process.lastRunOutputDirectory" value="L:\Data_Load_Jobs\XYZ\Account_Load_Job\Log"/> 
       <entry key="process.mappingFile" value="L:\Data_Load_Jobs\XYZ\Account_Update_Job\config\Account_Upload.sdl"/> 
       <entry key="process.operation" value="upsert"/> 
       <entry key="process.statusOutputDirectory" value="E:\FileShare\XYZ\Account_Update\Output"/> 
       <entry key="sfdc.bulkApiCheckStatusInterval" value="5000"/> 
       <entry key="sfdc.bulkApiSerialMode" value="5000"/> 
       <entry key="sfdc.debugMessages" value="false"/> 
       <entry key="sfdc.enableRetries" value="true"/> 
       <entry key="sfdc.entity" value="Account"/> 
       <entry key="sfdc.externalIdField" value="External_ID__c"/> 
       <entry key="sfdc.extractionRequestSize" value="500"/> 
       <entry key="sfdc.insertNulls" value="false"/> 
       <entry key="sfdc.loadBatchSize" value="50"/> 
       <entry key="sfdc.maxRetries" value="3"/> 
       <entry key="sfdc.minRetrySleepSecs" value="2"/> 
       <entry key="sfdc.noCompression" value="false"/>    
       <entry key="sfdc.timeoutSecs" value="60"/> 
       <entry key="sfdc.useBulkApi" value="false"/> 
      </map> 
     </property> 
    </bean> 
</beans> 

Von oben XML, ich möchte den Wert von entry Knoten basierend auf key aktualisieren. Hier ist, was ich versucht habe zu erreichen, aber es funktioniert nicht. Können Sie bitte vorschlagen, was im Code geändert werden muss?vbscript Aktualisierungsattribut xml

Option Explicit 

'On Error Resume Next 

Dim xmlDoc, nNode, strResult, wshShell, ProgramFiles, objFSO 

Set wshShell = CreateObject("WScript.Shell") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 

Set xmlDoc = CreateObject("Microsoft.XMLDOM") 

xmlDoc.Load "E:\Avijit\process-conf.xml" 
Set nNode = xmlDoc.SelectSingleNode("//benas/bean[@id='DE_OTC_Account_Update']/property[@name='configOverrideMap']/map/entry[@key='dataAccess.name']") 
nNode.Attributes.getNamedItem("value").Text = "NewValue" 
strResult = xmlDoc.Save("E:\Avijit\process-conf.xml") 

Set xmlDoc = Nothing 
Set wshShell = Nothing 
Set nNode = Nothing 
Set objFSO = Nothing 
WScript.Quit 

Antwort

0

Ich sehe drei Fragen mit Ihrem Code:

  • Sie haben einen Tippfehler in Ihrem XPath-Ausdruck. Ändern Sie benas zu beans.
  • Der Wert des Attributs id in Ihrer Beispiel-XML ist "Account_Update", nicht "DE_OTC_Account_Update".
  • zum Ändern eines Attributwert der SetAttribute Eigenschaft des Node-Objekt verwenden:

    nNode.SetAttribute("value") = "NewValue" 
    

Auch Microsoft.XMLDOM ist veraltet und sollte nicht mehr verwendet werden. Verwenden Sie stattdessen Msxml2.DOMDocument:

... 
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0") 
xmlDoc.Async = False 
xmlDoc.Load "E:\Avijit\process-conf.xml" 
...