PowerShell GUI – Enregistrer un XML et le recharger

Bonjour, ici je vous présente comment enregistrer un xml et comment le lire.

Petite interface pour les tests:


Codes:

Pour créer le chemin et le nom du XML

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$xmlpath = $PSScriptRoot + "\" +$script.Substring(0,$script.Length-4)+ ".xml"
$xmlpath = $PSScriptRoot + "\" +$script.Substring(0,$script.Length-4)+ ".xml"
$xmlpath = $PSScriptRoot + "\" +$script.Substring(0,$script.Length-4)+ ".xml"

Fonction de création du XML

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function CreateXMLGUI {
if (test-path $xmlpath) { Remove-item $xmlpath -Force -Recurse }
# Set The Formatting
$xmlsettings = New-Object System.Xml.XmlWriterSettings
$xmlsettings.Indent = $true
$xmlsettings.IndentChars = " "
# Set the File Name Create The Document
$XmlWriter = [System.XML.XmlWriter]::Create($xmlpath, $xmlsettings)
# Write the XML Decleration and set the XSL
$xmlWriter.WriteStartDocument()
$xmlWriter.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='style.xsl'")
$ValueItem1 = $Txt_Item1.Text
$ValueItem2 = $Txt_Item2.Text
# Start the Root Element
$xmlWriter.WriteStartElement("XML-Work") # <-- Start <Root>
$xmlWriter.WriteStartElement("Text") # <-- Start <Object>
$xmlWriter.WriteElementString("ValueItem1","$ValueItem1")
$xmlWriter.WriteElementString("ValueItem2","$ValueItem2")
$xmlWriter.WriteEndElement() # <-- End <Object>
$xmlWriter.WriteEndElement() # <-- End <Root>
# End, Finalize and close the XML Document
$xmlWriter.WriteEndDocument()
$xmlWriter.Flush()
$xmlWriter.Close()
}
function CreateXMLGUI { if (test-path $xmlpath) { Remove-item $xmlpath -Force -Recurse } # Set The Formatting $xmlsettings = New-Object System.Xml.XmlWriterSettings $xmlsettings.Indent = $true $xmlsettings.IndentChars = " " # Set the File Name Create The Document $XmlWriter = [System.XML.XmlWriter]::Create($xmlpath, $xmlsettings) # Write the XML Decleration and set the XSL $xmlWriter.WriteStartDocument() $xmlWriter.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='style.xsl'") $ValueItem1 = $Txt_Item1.Text $ValueItem2 = $Txt_Item2.Text # Start the Root Element $xmlWriter.WriteStartElement("XML-Work") # <-- Start <Root> $xmlWriter.WriteStartElement("Text") # <-- Start <Object> $xmlWriter.WriteElementString("ValueItem1","$ValueItem1") $xmlWriter.WriteElementString("ValueItem2","$ValueItem2") $xmlWriter.WriteEndElement() # <-- End <Object> $xmlWriter.WriteEndElement() # <-- End <Root> # End, Finalize and close the XML Document $xmlWriter.WriteEndDocument() $xmlWriter.Flush() $xmlWriter.Close() }
function CreateXMLGUI {
if (test-path $xmlpath) { Remove-item $xmlpath -Force -Recurse }
# Set The Formatting
$xmlsettings = New-Object System.Xml.XmlWriterSettings
$xmlsettings.Indent = $true
$xmlsettings.IndentChars = "    "

# Set the File Name Create The Document
$XmlWriter = [System.XML.XmlWriter]::Create($xmlpath, $xmlsettings)

# Write the XML Decleration and set the XSL
$xmlWriter.WriteStartDocument()
$xmlWriter.WriteProcessingInstruction("xml-stylesheet", "type='text/xsl' href='style.xsl'")

$ValueItem1  = $Txt_Item1.Text
$ValueItem2  = $Txt_Item2.Text

# Start the Root Element
$xmlWriter.WriteStartElement("XML-Work") # <-- Start <Root>
    $xmlWriter.WriteStartElement("Text") # <-- Start <Object>
        $xmlWriter.WriteElementString("ValueItem1","$ValueItem1")
        $xmlWriter.WriteElementString("ValueItem2","$ValueItem2")
    $xmlWriter.WriteEndElement() # <-- End <Object>
$xmlWriter.WriteEndElement() # <-- End <Root> 

# End, Finalize and close the XML Document
$xmlWriter.WriteEndDocument()
$xmlWriter.Flush()
$xmlWriter.Close()
}

Fonction de lecture du XML

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function Read-XML
{
if (test-path $xmlpath)
{
Write-Host "Read XML: $xmlpath"
[xml]$xml = get-content ("$xmlpath")
foreach ($valeurxml in $xml.'XML-Work')
{
$Txt_Item1.Text = $valeurxml.Text.ValueItem1
$Txt_Item2.Text = $valeurxml.Text.ValueItem2
}
}
else { Write-Host "no xml found" }
}
function Read-XML { if (test-path $xmlpath) { Write-Host "Read XML: $xmlpath" [xml]$xml = get-content ("$xmlpath") foreach ($valeurxml in $xml.'XML-Work') { $Txt_Item1.Text = $valeurxml.Text.ValueItem1 $Txt_Item2.Text = $valeurxml.Text.ValueItem2 } } else { Write-Host "no xml found" } }
function Read-XML
{
    if (test-path $xmlpath)
    {
        Write-Host "Read XML: $xmlpath"
        [xml]$xml = get-content ("$xmlpath")
        foreach ($valeurxml in $xml.'XML-Work')
        { 
            $Txt_Item1.Text = $valeurxml.Text.ValueItem1
            $Txt_Item2.Text = $valeurxml.Text.ValueItem2
        }
    }
    else { Write-Host "no xml found" }
}

Fichiers

Voici la forme du fichier .xml généré

Je vous laisse le script PS1 en téléchargement.