人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: SevenS
●カテゴリ:コンピュータ
✍キーワード:.NET Framework C# DTD SVG XML
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ohmix1
●10ポイント

XmlDocument.validateOnParse = false

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

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

◎質問者からの返答

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

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


2 ● ohmix1
●60ポイント ベストアンサー

.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");


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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ