# Module XmlParser - Parse et generation XML Enocean function Get-DeviceListFromJson { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$JsonContent ) $json = $JsonContent | ConvertFrom-Json $devices = @() if ($json.files) { foreach ($file in $json.files) { $devices += @{ Name = $file.path.name Href = $file.path.href } } } return , $devices } function Parse-EnoceanDeviceXml { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$XmlContent ) [xml]$xml = $XmlContent $config = $xml.EnOceanDevice.Configuration return @{ ResourceNumber = [int]$config.ResourceNumber DeviceId = $config.DeviceId DeviceType = $config.DeviceType } } function New-EnoceanDeviceXml { [CmdletBinding()] param( [Parameter(Mandatory)] [int]$ResourceNumber, [Parameter(Mandatory)] [string]$DeviceId, [Parameter(Mandatory)] [string]$DeviceType ) $xml = @" EnOceanDevice $ResourceNumber EnOcean Device $ResourceNumber $DeviceId $DeviceType 2400 "@ return $xml } function Update-EnoceanDeviceId { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$XmlContent, [Parameter(Mandatory)] [string]$NewDeviceId ) # Parser pour extraire les valeurs actuelles [xml]$xml = $XmlContent $config = $xml.EnOceanDevice.Configuration $oldDeviceId = $config.DeviceId $deviceType = $config.DeviceType # Remplacement par regex sur le XML brut (preserve l'encodage et le formatage original) $modifiedXml = $XmlContent -replace "[^<]*", "$NewDeviceId" return @{ ModifiedXml = $modifiedXml OldDeviceId = $oldDeviceId DeviceType = $deviceType } } function Update-GfxDeviceIds { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$MainXmlContent, [Parameter(Mandatory)] [hashtable]$DeviceIdMap # @{ "ancien_id" = "nouveau_id" } ) $modifiedXml = $MainXmlContent $replaceCount = 0 foreach ($oldId in $DeviceIdMap.Keys) { $newId = $DeviceIdMap[$oldId] $pattern = "$oldId" $replacement = "$newId" if ($modifiedXml -match [regex]::Escape($pattern)) { $modifiedXml = $modifiedXml -replace [regex]::Escape($pattern), $replacement $replaceCount++ } } return @{ ModifiedXml = $modifiedXml ReplaceCount = $replaceCount } } Export-ModuleMember -Function Get-DeviceListFromJson, Parse-EnoceanDeviceXml, New-EnoceanDeviceXml, Update-EnoceanDeviceId, Update-GfxDeviceIds