4

XML を自動的に生成し、検証のためにクライアント サイトに手動でアップロードする必要がある XML の生成に問題があります。

クライアントの仕様では、先頭に DTD 宣言を含める必要があります。あれは

<!DOCTYPE TheFile System "TheDTD.dtd" ""> 

プログラムで XML 行を生成しようとすると、

    XmlDocumentType doctype;
    doctype = doc.CreateDocumentType("TheFile", null, "TheDTD.dtd", null);
    doc.AppendChild(doctype);

失敗し、「TheDTD.dtd」が Windows ディレクトリに存在する必要があると尋ねられます: C:\Windows\System32\inetsrv

後で XmlDoc を読みたい場合は、次の行

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlLocation);

失敗し、プロジェクト全体が保存されているプロジェクトディレクトリに「TheDTD.dtd」が存在する必要があるかどうかを尋ねられます

私は実際に DTD を検証したくはありません。検証はクライアント側で行われるため、参照したいだけです。実際の .dtd を 2 つの異なる場所にコピーすることなく、XML に行 " " を追加する方法はありますか?

宣言を公開し、これを

 <!DOCTYPE TheFile PUBLIC "TheDTD.dtd" ""> 

その後、すべてが正常に機能しますが、クライアントはそれが PUBLIC ではなく SYSTEM であることを要求します。実際の .dtd が欠落している場合、CreateDocumentType と Load メソッドがクラッシュしないことを願っています。この時点では、このファイルさえ持っておらず、私の目的には必要ないからです。

ありがとうございました

4

1 に答える 1

9

XmlDocument.XmlResolverプロパティをnullに設定できます。これにより、外部XMLリソース(dtd、スキーマ)のロードが無効になります。

doc.XmlResolver= null;
于 2012-06-22T10:23:57.337 に答える