Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    90

    [VBScript] Modifica di un file di testo o xml

    Salve a tutti,
    ho un file di questo tipo :
    codice:
     <Persone>
        <Person id="numeroid" info="QUALCOSA QUALCOSA">
            <E-mail>email@email.it</E-mail>
            <Nome>NOME</Nome>
            <Cognome>COGNOME</Cognome>
            <Stato>Attivo/Disattivo</Stato>
            <Tipo_Dipendente>POSIZIONE</Tipo_Dipendente>
            <Codice_Fiscale>CODI</Codice_Fiscale>
            <Telefono>numero di telefono</Telefono>
            <Area_Specialistica nil="true"/>
            <Valido_dal>DATA INIZIO</Valido_dal>
            <Valido_fino_al>DATA FINE</Valido_fino_al>
            <vip>vero/false</vip>
        </Person>
     <Person id="numeroid" info="QUALCOSA QUALCOSA">
            <E-mail>email@email.it</E-mail>
            <Nome>NOME</Nome>
            <Cognome>COGNOME</Cognome>
            <Stato>Attivo/Disattivo</Stato>
            <Tipo_Dipendente>POSIZIONE</Tipo_Dipendente>
            <Codice_Fiscale>CODI</Codice_Fiscale>
            <Telefono>numero di telefono</Telefono>
            <Area_Specialistica nil="true"/>
            <Valido_dal>DATA INIZIO</Valido_dal>
            <Valido_fino_al>DATA FINE</Valido_fino_al>
            <vip>vero/false</vip>
        </Person>
    </Persone>
    Ora vorrei scambiare ed eliminare alcune informazioni inutili portando il file a questa struttura :

    codice:
     <Persone>
        <Person id="numeroid" > //Eliminare l'attributo info
             <Cognome>COGNOME</Cognome>
             <Nome>NOME</Nome>
             <Telefono>numero di telefono</Telefono>      
             <E-mail>email@email.it</E-mail>
             <Valido_dal>DATA INIZIO</Valido_dal>
             <Valido_fino_al>DATA FINE</Valido_fino_al>
              <Codice_Fiscale>CODI</Codice_Fiscale>
             <Stato>Attivo/Disattivo</Stato>
            <Tipo_Dipendente>POSIZIONE</Tipo_Dipendente>
              <vip>vero/false</vip>
        </Person>
    <Person id="numeroid" > //Eliminare l'attributo info
             <Cognome>COGNOME</Cognome>
             <Nome>NOME</Nome>
             <Telefono>numero di telefono</Telefono>      
             <E-mail>email@email.it</E-mail>
             <Valido_dal>DATA INIZIO</Valido_dal>
             <Valido_fino_al>DATA FINE</Valido_fino_al>
              <Codice_Fiscale>CODI</Codice_Fiscale>
             <Stato>Attivo/Disattivo</Stato>
            <Tipo_Dipendente>POSIZIONE</Tipo_Dipendente>
              <vip>vero/false</vip>
     </Persone>

    Ho inoltre l'esigenza di eliminar ela riga dell'AreaSpecialistica.
    Potreste scrivermi un codice per portare il file in queste condizioni ?
    Altrimenti mi sapreste dare un codice d'esempio per scambiare 2 righe ??

    GRAZIE ANTICIPATAMENTE

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da Ale88
    Potreste scrivermi un codice per portare il file in queste condizioni ?
    Qui non si scrive codice su richiesta: fai una ricerca, studia le classi di manipolazione XML fornite da Microsoft, inizia a scrivere codice e, in caso di errori o ostacoli specifici, posta il codice e la descrizione dei problemi e saremo ben felici di aiutarti.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    90
    Il problema è che lo sto usando occasionalmente..
    Quindi ne sono un neofita.
    Alcune modifiche al file gia le avevo apportate tramite questo script :

    codice:
    Const ForReading = 1
    Const ForWriting = 2
    
    strFileName = "C:\Users\Desktop\export.xml"
    
    
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
    
    strText = objFile.ReadAll
    objFile.Close
    strNewText = Replace(strText, "firstname", "Nome")
    strNewText = Replace(strNewText, "lastname", "Cognome")
    strNewText = Replace(strNewText, "validto", "Valido_fino_al")
    strNewText = Replace(strNewText, "validfrom", "Valido_dal")
    strNewText = Replace(strNewText, "persType", "Tipo_Dipendente")
    strNewText = Replace(strNewText, "persStatus", "Stato")
    strNewText = Replace(strNewText, "phoneNo", "Telefono")
    strNewText = Replace(strNewText, "persUserid", "Codice_Fiscale")
    strNewText = Replace(strNewText, "ACTIVE", "Attivo")
    strNewText = Replace(strNewText, "NON_ACTIVE", "Non_Attivo")
    strNewText = Replace(strNewText, "email", "E-mail")
    strNewText = Replace(strNewText, "specialistArea", "Area_Specialistica")
    strNewText = Replace(strNewText, "<?xml version=" & chr(34) & "1.0" & chr(34) & " encoding=" & chr(34) & "UTF-8" & chr(34) & "?>", "")
    strNewText = Replace(strNewText, "<VMObjects exporter-version=" & chr(34) & "3.0.8" & chr(34) & "", "")
    strNewText = Replace(strNewText, "modules=" & chr(34) & "0,1,2,4,6,7,9,99,101,333,500,702,704" & chr(34) & "", "")
    strNewText = Replace(strNewText, "timezone=" & chr(34) & "Europe/Berlin" & chr(34) & " version=" & chr(34) & "3.6.1.HOTFIX17" & chr(34) & "", "")
    strNewText = Replace(strNewText, "xmlns:xsi=" & chr(34) & "http://www.w3.org/2001/XMLSchema-instance" & chr(34) & "", "")
    strNewText = Replace(strNewText, "xsi:noNamespaceSchemaLocation=" & chr(34) & "VMObjects.xsd" & chr(34) & ">", "<Persone>")
    strNewText = Replace(strNewText, "</VMObjects>", "</Persone>")
    strNewText = Replace(strNewText, "vip", "Vip")
    
    Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
    objFile.WriteLine strNewText
    
    
    
    
    objFile.Close
    Il problema è che non riesco a trovare niente di niente riguardante la lettura di una singola riga. In Java saprei come fare..Leggerei il file e inserirei le righe in un array, scambierei le posizioni con una variabile d'appoggio e fine.
    Ma in VB nada de nada..

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    90
    Dunque ora mediante questo codice

    codice:
    
    
    Dim objFSO, strTextFile, strData, strLine, arrLines,appoggio
    
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    strData = objFSO.OpenTextFile(strFileName,ForReading).ReadAll
    
    arrLines = Split(strData,vbCrLf)
    
    Dim i
    i = 0
    
    For i = 0 To UBound(arrLines) - 1  
          If arrLines(i).StartsWith("<Area_Specialistica") Then
                arrLines(i) = ""
          End If
           
    Next
    
    
    For Each strLine in arrLines
    wscript.echo strLine
    Next
    
    
    
    Set objFSO = Nothing
    Prendo un array contenente tutte le righe del mio file da modificare.
    Con un ciclo voglio prendere le righe che iniziano con "<Area_Specialistica" e cancellarla.
    Solamente che l'istruzione

    codice:
    If arrLines(i).StartsWith("<Area_Specialistica") Then
    Mi da errore di runtime.. Come posso risolvere ??
    GRAZIE

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    90

    [VBScript] Modifica elemento array

    Salve ragazzi, la mia intenzione è quella di leggere un file di testo , inserire le righe su un array, fare le modifiche all'array e rinfilare il tutto nel file.
    Sto provando questo codice:

    codice:
    strFileName = "C:\Users\alessandro.cassis\Desktop\export.xml"
    
    
    Dim objFSO, strTextFile, strData, strLine,arrLines,cont
    
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    strData = objFSO.OpenTextFile(strFileName,ForReading).ReadAll
    arrLines = Split(strData,vbCrLf)
    
    Dim i
    i = 0
    
    Dim app,leng,appoggio
    
    For i = 0 To UBound(arrLines) - 1  
    
          If InStr(arrLines(i),"<Area_Specialistica") <> 0 Then   'al suo interno avviene la cancellazione di quella riga
               
             arrLines(i) =   Replace(arrLines(i), "<Area_Specialistica nil=" & chr(34) & "true" & chr(34) & "/>", "")
          End If
    
          If InStr(arrLines(i),"info") > 0 Then  'al suo interno elimino l'attributo info del tag Person
                leng=  InStr(arrLines(i),"info")
                appoggio =   Left(arrLines(i),leng-1)
                arrLines(i)=   Replace(arrLines(i), arrLines(i), appoggio & " >")
          End If
           
    Next
    
    
    
    
    
    strLine = Join(arrLines)
    
    Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
    objFile.WriteLine strLine
    
    
    
    Set objFSO = Nothing
    Non da errore, il file di testo originale è in questo formato :

    codice:
    <Persone>
        <Person id="numeroid" info="QUALCOSA QUALCOSA">
            <E-mail>email@email.it</E-mail>
            <Nome>NOME</Nome>
            <Cognome>COGNOME</Cognome>
            <Stato>Attivo/Disattivo</Stato>
            <Tipo_Dipendente>POSIZIONE</Tipo_Dipendente>
            <Codice_Fiscale>CODI</Codice_Fiscale>
            <Telefono>numero di telefono</Telefono>
            <Area_Specialistica nil="true"/>
            <Valido_dal>DATA INIZIO</Valido_dal>
            <Valido_fino_al>DATA FINE</Valido_fino_al>
            <vip>vero/false</vip>
        </Person>
     <Person id="numeroid" info="QUALCOSA QUALCOSA">
            <E-mail>email@email.it</E-mail>
            <Nome>NOME</Nome>
            <Cognome>COGNOME</Cognome>
            <Stato>Attivo/Disattivo</Stato>
            <Tipo_Dipendente>POSIZIONE</Tipo_Dipendente>
            <Codice_Fiscale>CODI</Codice_Fiscale>
            <Telefono>numero di telefono</Telefono>
            <Area_Specialistica nil="true"/>
            <Valido_dal>DATA INIZIO</Valido_dal>
            <Valido_fino_al>DATA FINE</Valido_fino_al>
            <vip>vero/false</vip>
        </Person>
    </Persone>
    Ma eseguendo il codice invece di editare quelle due righe con il replace, mi fa uscire fuori un file così :

    codice:
        <Persone>
        <Person id="13876"  >
    Quindi immagino che invece di editare solamente quell'elemento dell'array lo edita tutto..
    Dove sbaglio ??

    GRAZIE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.