【问题标题】:Read XML file with BOM in Powershell在 Powershell 中使用 BOM 读取 XML 文件
【发布时间】:2011-08-22 06:37:01
【问题描述】:

Powershell 似乎在使用带有 unicode BOM 的 xml 文件 - 代码:

$xml = [xml]{ get-content $filename }

出现“根级别的数据无效”。

有没有一种简单的方法可以做到这一点而无需摆弄文件的内容?

【问题讨论】:

    标签: xml powershell byte-order-mark


    【解决方案1】:

    您正试图在此处将脚本块转换为 XML。使用() 而不是{}

    $xml  = [xml] (gc $filename)
    

    事实上,错误信息已经告诉了你很多:

    PS Home:\> $xml = [xml]{gc test.xml}
    Cannot convert value "gc test.xml" to type "System.Xml.XmlDocument". Error: "Data at the root level is invalid. Line 1,
     position 1."
    At line:1 char:13
    + $xml = [xml] <<<< {gc test.xml}
        + CategoryInfo          : NotSpecified: (:) [], RuntimeException
        + FullyQualifiedErrorId : RuntimeException
    

    您注意到脚本块的内容是如何显示在错误消息中的吗?

    【讨论】:

    • 完美运行,谢谢。老实说,我发现那些 Powershell 错误消息几乎无法辨认。
    • @Sam:第一部分是异常消息。第二部分在脚本(或命令行)中的位置;之后是该位置的视觉指示。最后两行你可以放心地忽略。
    • 世界将变得更美好,人们会阅读他们的错误信息。 ;)
    • @JasonMArcher - 我没有说我没有读过这条消息,我只是没有从中得到任何有用的信息。 FWIW 我的实际异常消息比这长 268 行。
    猜你喜欢
    • 2014-02-17
    • 2014-01-18
    • 2014-03-04
    • 2010-11-19
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多