.NET Frameworkの質問です。

XMLを扱うC#プログラムを作成しているのですが、XmlDocument.Loadメソッドの実行に時間がかかって困っています(10秒程度)。
DOCTYPE宣言でDTDを宣言(今回のケースではSVG)していると、検証のためかLoadメソッドで時間を食うようです。

この部分の高速化のためにはどうすればいいのか、ご存知でしたらご教授ください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/11/09 00:22:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ohmix1 No.2

回答回数235ベストアンサー獲得回数14

ポイント60pt

.NET詳しくないのに何度もすみません。

リファレンスを見ると、デフォルトではLoadでValidateはされないようです。

ただし、DTDはValidate用途だけではないので、読み込みはされると。。。


XmlResolver という外部リソースへのアクセス権限を設定しているプロパティを設定すれば、DTDを無視するもよう。


http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20153&am...


XmlDocument doc = new XmlDocument();

doc.XmlResolver = null;

doc.Load("filepath");


みたいな感じでどうでしょう。

id:SevenS

MSDNの方も見てみました。思い通りの動作をしてくれそうですね。

動作確認は今できないですが、XmlDocument.XmlResolverをnull参照にして、DTD宣言がされているために起こるXmlExceptionに対応すれば、問題は解決できうです。ありがとうございました。

2006/11/09 00:20:38

その他の回答1件)

id:ohmix1 No.1

回答回数235ベストアンサー獲得回数14

ポイント10pt

XmlDocument.validateOnParse = false

http://www.microsoft.com/japan/msdn/xml/general/beginner.aspx

でいけると思うのですが、.NET詳しくないので...

id:SevenS

残念ながら、.NETのXmlDocumentにはValidateOnParseプロパティはありませんでした。

MSXMLの仕様のようなので、IE上(およびActiveX?)でなら使えるということでしょうね。残念です。

2006/11/08 16:19:21
id:ohmix1 No.2

回答回数235ベストアンサー獲得回数14ここでベストアンサー

ポイント60pt

.NET詳しくないのに何度もすみません。

リファレンスを見ると、デフォルトではLoadでValidateはされないようです。

ただし、DTDはValidate用途だけではないので、読み込みはされると。。。


XmlResolver という外部リソースへのアクセス権限を設定しているプロパティを設定すれば、DTDを無視するもよう。


http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20153&am...


XmlDocument doc = new XmlDocument();

doc.XmlResolver = null;

doc.Load("filepath");


みたいな感じでどうでしょう。

id:SevenS

MSDNの方も見てみました。思い通りの動作をしてくれそうですね。

動作確認は今できないですが、XmlDocument.XmlResolverをnull参照にして、DTD宣言がされているために起こるXmlExceptionに対応すれば、問題は解決できうです。ありがとうございました。

2006/11/09 00:20:38

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません