28
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.XmlResolver = null;

    xmldoc.Load("URL");
    XmlWriter xmlWrite = XmlWriter.Create(@Server.MapPath("Test.xml"));
    xmldoc.Save(xmlWrite);
    xmlWrite.Close();

上記は、XML ファイルを読み取るために使用しているコードです。読み込んでいる XML には次のようなエンティティが含まれているnbsp;ため、コードは XMLException をスローしています。

宣言されていないエンティティ 'nbsp' への参照

4

3 に答える 3

58

これを処理するには 2 つの方法がありますが、どちらの場合も入力ファイルを変更する必要があります。

1)入力ファイルの を変更 します。 常に Unicode を使用し、XML ドキュメント内の読み取り可能なエンティティを避けることをお勧めします。プレーン Unicode 文字またはその数値形式を使用します。

2) それでも使用する必要がある場合/使用したい場合  は、変換を行うファイルでカスタム doctype を宣言できます。

<!DOCTYPE doctypeName [
   <!ENTITY nbsp "&#160;">
]> 

この問題は&nbsp;、XML で事前定義されたエンティティの 1 つでないために発生しています。

于 2013-03-29T11:10:12.370 に答える
8

今日も同じ問題があり、HTML エンティティ名を HTML エンティティ番号に変更することで解決できました。

この役立つフォーラムの投稿に従って、このエラーを修正できました。

HTML エンティティ名は、XML では十分にサポートされていません。これが、「非改行スペース」--「nbsp」--がこのイライラするエラーを引き起こす理由です。

この問題を解決する最も簡単な方法は、HTML エンティティ番号を使用することです。つまり&nbsp;&#160;.

名前と番号を含む HTML エンティティの包括的なリストについては、以下を参照してください。

W3 School の HTML エンティティ リファレンス ページ

エンティティ セットに関する W3C の公式ページ

于 2013-06-25T16:38:17.913 に答える