# 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 } } Export-ModuleMember -Function Get-DeviceListFromJson, Parse-EnoceanDeviceXml, New-EnoceanDeviceXml, Update-EnoceanDeviceId