Visualizzazione dei risultati da 1 a 4 su 4

Discussione: modifica file xml

  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    modifica file xml

    Ho un file xml con questa struttura (semplificata)
    codice:
    <MapWindow>
    	<GeneralProperties></GeneralProperties>
    	<CoordinateSystem></CoordinateSystem>
    	<MapLayers>
    		<PolygonLayer>
    			<GeneralLayerProperties>
    				<Name>Buildings</Name>
    				<Visible>0</Visible>
    			</GeneralLayerProperties>
    		</PolygonLayer>
    		<PolygonLayer>
    			<GeneralLayerProperties>
    				<Name>World Countries</Name>
    				<Visible>0</Visible>
    			</GeneralLayerProperties>
    		</PolygonLayer>
    	</MapLayers>
    </MapWindow>
    io debbo:
    1) leggere il file da disco
    2) per un certo layer di nome 'World Countries' debbo modificare la proprietà Visible

    ho fatto questo codice che parrebbe funzionare. Chiedo se si può fare meglio :master:
    codice:
    Sub ModificaMwxFile(ByVal mwxFile As String)
    	'utilizzo il dom
    	Dim xmlDoc As New XmlDocument()
    
    	'carico l'xml da file
    	xmlDoc.Load(mwxFile)
    
    	'accedo alla radice
    	Dim radice As XmlElement = xmlDoc.DocumentElement
    
    	For Each layer As XmlElement In radice.GetElementsByTagName("MapLayers")
    		For Each polygonLayer As XmlElement In layer.GetElementsByTagName("PolygonLayer")
    			For Each generalLayerPropertie As XmlElement In polygonLayer.GetElementsByTagName("GeneralLayerProperties")
    				Dim nodo As XmlNode = generalLayerPropertie.ChildNodes(0)
    				If nodo.InnerText = "World Countries" Then
    					'PrintLn(nodo.InnerText, nodo.Name)
    					'generalLayerPropertie.ChildNodes(1).InnerText = "0"
    					generalLayerPropertie.ChildNodes(1).InnerText = SE(generalLayerPropertie.ChildNodes(1).InnerText = "0", "1", "0")
    				End If
    			Next
    		Next
    	Next
    
    	xmlDoc.Save(mwxFile)
    
    End Sub
    Pietro

  2. #2

    Prova così...

    codice:
    Dim nodi As XmlNodeList = xmlDoc.DocumentElement.SelectSingleNode("//MapWindow/MapLayers/PolygonLayer/GeneralLayerProperties/[Name = \"World Countries\"]")
    A questo punto dovresti aver beccato tutti i nodi che contengono World Countries, li scorri, li modifichi e salvi il tutto...

    Per una lista di esempi sull'utilizzo del mitico XPath prova a guardare qui

    Marco Cavallo
    WebMaster & Programmer
    Il mio sito in continua evoluzione...
    Vieni a trovarmi!
    http://www.artcava.net/

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non speravo di meglio. Ti ringrazio dei suggerimenti. Ciao
    Pietro

  4. #4
    De nada!

    Buon divertimento con XPath...

    Marco Cavallo
    WebMaster & Programmer
    Il mio sito in continua evoluzione...
    Vieni a trovarmi!
    http://www.artcava.net/

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.