2012-04-13 47 views
4

我正在编写一个脚本,该脚本应该查看文件的内容并确定它是否是(格式良好的)XML。我发现了一个网页[ss64.com] [1],这是很容易做到: 如何确定Powershell中的XML类型?

>32 -is [int] 
True 

的事然而,我只能通过铸造左侧为XML文件测试:

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

......在这种情况下,它将是毫无意义的:如果该文件是XML文件,该文件将会证明这一点,否则会抛出异常。因此我想知道:有没有什么方法可以通过True-False的方式来确定Powershell中的XML文件?

回答

11

尝试-as操作:

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

非常整洁 - 谢谢! – gustafbstrom 2012-04-13 11:36:36

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 
} 
+0

好的,工作正常!非常感谢! – gustafbstrom 2012-04-13 11:37:05