如何在Powershell中确定XML类型?

5

我正在编写一个脚本,用于查看文件内容并确定它是否是(格式良好的)XML。我在[ss64.com][1]上找到了一个页面,这很容易实现:

>32 -is [int]
True

问题是,我只能通过将左侧用于 XML 文件进行转换来测试此功能:

>[xml](Get-Content c:\Path\To\xml_file.xml) -is [xml]
False

在这种情况下,进行类型转换实际上是没有意义的:如果文件是XML格式,那么强制转换已经可以证明这一点,否则就会抛出异常。因此,我想知道:有没有一种方法可以在PowerShell中以真-假方式确定XML文件?

2个回答

12

尝试使用-as运算符:

[bool]((Get-Content c:\Path\To\xml_file.xml) -as [xml])

1
function Is-Valid-XML 
{
    param ([string] $path)

    $xml = New-Object System.Xml.XmlDocument
    try 
    {
        $xml.Load($path)
        $valid = $true
    }

    catch
    {
        $valid = $false
    }

    return $valid
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接