I'm writing a script that is supposed to look at the content of a file and determine if it is a (well formed) XML or not. I found a page on [ss64.com][1] that this is quite easy to do:
>32 -is [int]
True
The thing is however that I can only test this by casting the left-side for XML files:
>[xml](Get-Content c:\Path\To\xml_file.xml) -is [xml]
False
...which in this case would be rather pointless: if the file is XML, the casting will already prove this, else throw an exception. I therefore wonder: is there any way to determine XML files in Powershell in a True-False way?
Try the -as
operator:
[bool]((Get-Content c:\Path\To\xml_file.xml) -as [xml])
function Is-Valid-XML
{
param ([string] $path)
$xml = New-Object System.Xml.XmlDocument
try
{
$xml.Load($path)
$valid = $true
}
catch
{
$valid = $false
}
return $valid
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With