4

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

>32 -is [int]
True

然而,问题是我只能通过将左侧转换为 XML 文件来测试它:

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

...在这种情况下,这将毫无意义:如果文件是 XML,则转换已经证明了这一点,否则抛出异常。因此我想知道:有没有办法以真假方式确定 Powershell 中的 XML 文件?

4

2 回答 2

11

试试-as运营商:

[bool]((Get-Content c:\Path\To\xml_file.xml) -as [xml])
于 2012-04-13T09:20:25.627 回答
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
}
于 2012-04-13T09:28:16.887 回答