Error handling 如何使用Powershell设置(或忽略)DTD属性?

Error handling 如何使用Powershell设置(或忽略)DTD属性?,error-handling,powershell-2.0,dtd,Error Handling,Powershell 2.0,Dtd,我有一个powershell脚本,可以将HTML文档转换为Word、RTF、文本和Word 2010.docx。许多文件出现以下错误: Exception calling "Open" with "1" argument(s): "Word encountered an error processing the XML file Viewing_Customer_Payments.htm DTD is prohibited. Location: Line: 2, Column: 9" At C

我有一个powershell脚本,可以将HTML文档转换为Word、RTF、文本和Word 2010.docx。许多文件出现以下错误:

Exception calling "Open" with "1" argument(s): "Word encountered an error processing the XML file Viewing_Customer_Payments.htm
DTD is prohibited.
Location:  Line: 2, Column: 9"
At C:\blah\blah\blah\blah\blah.PS1:95 char:36
+     $opendoc = $word.documents.open <<<< ($docs.FullName)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation
我一直在寻找DTD PosikSek信息,而在C、C++、VB中设置允许/不允许值,但对于PuthS壳来说非常珍贵。加载时出错,不会显示powershell示例代码;我怀疑这是因为还没有推出最新最棒的IE

因此,在一个完美的世界中,我想在我的脚本中包含一行代码,它要么允许DTD,要么忽略禁止。我不知道该怎么做,甚至不知道是否有什么东西通过powershell

如果很重要,成功的文件转换有以下标题:

出错的文档使用以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

做了一些挖掘。我看到的一种可能性是编写一个忽略DTD的函数。这个想法也应该对你有用

Function Get-XML ($filePath) {
$fileContent = New-Object System.Xml.XmlDocument
$fileContent.XmlResolver = $null
Try {
    $fileContent.Load($filePath)
    }
Catch [system.exception] {
    write-host "Could not open file $filePath"
}
$fileContent

}进行了一些挖掘。我看到的一种可能性是编写一个忽略DTD的函数。这个想法也应该对你有用

Function Get-XML ($filePath) {
$fileContent = New-Object System.Xml.XmlDocument
$fileContent.XmlResolver = $null
Try {
    $fileContent.Load($filePath)
    }
Catch [system.exception] {
    write-host "Could not open file $filePath"
}
$fileContent

}

虽然我无法使用@GaussianBlur的建议忽略DTD,但该解决方案确实揭示了元数据中的一些奇怪之处

我注意到,任何带有error的文件都会被输出,而HTML中没有该行的文件会被转换而不会发生意外


一个简单的全局替换/删除我所有的HTML文件很快就解决了这个问题

虽然我无法使用@GaussianBlur的建议忽略DTD,但该解决方案确实揭示了元数据中的一些奇怪之处

我注意到,任何带有error的文件都会被输出,而HTML中没有该行的文件会被转换而不会发生意外


一个简单的全局替换/删除我所有的HTML文件很快就解决了这个问题

对于我所需要的,我只使用了高斯模糊答案中的一行就完成了这项工作

我已经有了这个: $xml=新对象-类型名xml

我刚才补充说: $xml.xmlsolver=$null


这成功地忽略了DTD

对于我所需要的,我只使用了高斯模糊的答案中的一行

我已经有了这个: $xml=新对象-类型名xml

我刚才补充说: $xml.xmlsolver=$null


这成功地忽略了DTD

看起来很像它会起作用…一旦我弄清楚如何集成它…:对链接特别激动;我们正在转换所有这些文档,以便编辑它们。我知道我将在哪里花费大量的上网时间看起来很像它会起作用…一旦我知道如何集成它对链接特别激动;我们正在转换所有这些文档,以便编辑它们。我知道我将在哪里花费大量的上网时间