none
外部DTDを使用したXMLの読み込み

    質問

  • お世話になります。

    下記のXMLファイルを読み込むときに、

    $doc = [xml](gc books.xml)

    としているのですが、
    値 "System.Object[]" を型 "System.Xml.XmlDocument" に変換できません。エラー: "ファイル 'C:\Users\(ログインアカウント名)\books.dtd'
     が見つかりませんでした。"

    とエラー表示されます。同じフォルダにDTDファイルがあるのですが、読めるようにするにはどうしたららよいでしょうか。

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE books SYSTEM "books.dtd">
    <books>
            <book>
                    <title>入門編</title>
                    <category>VB.NET</category>
                    <author>山田君</author>
                    <price>1000</price>
                    <border/>
            </book>
    </books>

    2011年3月30日 0:37

回答

  • PowerShellのカレントディレクトリと、.NETプログラムとしてのカレントディレクトリが異なるのが原因です。
    なので、両者をあわせてやることで解決します。それには以下の文をXML読み込み前に実行すると良いでしょう。

    [System.Environment]::CurrentDirectory = Get-Location

    2011年3月30日 9:09
    モデレータ

すべての返信

  • PowerShellのカレントディレクトリと、.NETプログラムとしてのカレントディレクトリが異なるのが原因です。
    なので、両者をあわせてやることで解決します。それには以下の文をXML読み込み前に実行すると良いでしょう。

    [System.Environment]::CurrentDirectory = Get-Location

    2011年3月30日 9:09
    モデレータ
  • ご返事ありがとうございました。

    >[System.Environment]::CurrentDirectory = Get-Location

    でDTDを読むことができました。

    返事遅くなり申し訳ございませんでした。。。

    2011年4月6日 0:36